Invio Push Notification utilizzando FCM
Google deprecato il Google Cloud Messaging (GCM) e ha lanciato nuovo server di notifica push che è Firebase Nuvola Messaging (FCM). FCM è lo stesso come il MCG, FCM è anche una soluzione di messaggistica cross-platform per piattaforme mobili
Firebase cloud di messaggistica in grado di inviare tre tipi di messaggi (Message types)
1.Notification Messaggio
2.Data Messaggio
3.message sia con notifica e Data
0.123.
Firebase Cloud Messaging passi Integrazione: -
1.IMPOSTA Nuovo progetto o un progetto di importazione in Firbase Console (https://firebase.google.com/)
2.Add lo stesso nome del pacchetto di App in Firebase App.
3. Ottieni il file "google-services.json" e metti il file nella cartella dell'app del progetto. Questo file contiene tutti gli Url e le Chiavi per il servizio di Google, quindi non modificare o modificare questo file.
4.Aggiungi nuove dipendenze Gradle in Project for Firebase.
//app/build.gradle
dependencies {
compile 'com.google.firebase:firebase-messaging:9.6.0'
}
apply plugin: 'com.google.gms.google-services'
5.Crea una classe che contiene tutti i valori costanti che usiamo nell'app per FCM.
public class Config {
public static final String TOPIC_GLOBAL = "global";
// broadcast receiver intent filters
public static final String REGISTRATION_COMPLETE = "registrationComplete";
public static final String PUSH_NOTIFICATION = "pushNotification";
// id to handle the notification in the notification tray
public static final int NOTIFICATION_ID = 100;
public static final int NOTIFICATION_ID_BIG_IMAGE = 101;
public static final String SHARED_PREF = "ah_firebase";
}
6. Creare una classe denominata MyFirebaseInstanceIDService.java che sarà riceve l'ID di registrazione Firebase che sarà unico per ogni app. L'ID di registrazione viene utilizzato per inviare un messaggio a un singolo dispositivo.
public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {
private static final String TAG = MyFirebaseInstanceIDService.class.getSimpleName();
@Override
public void onTokenRefresh() {
super.onTokenRefresh();
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
// Saving reg id to shared preferences
storeRegIdInPref(refreshedToken);
// sending reg id to your server
sendRegistrationToServer(refreshedToken);
// Notify UI that registration has completed, so the progress indicator can be hidden.
Intent registrationComplete = new Intent(Config.REGISTRATION_COMPLETE);
registrationComplete.putExtra("token", refreshedToken);
LocalBroadcastManager.getInstance(this).sendBroadcast(registrationComplete);
}
private void sendRegistrationToServer(final String token) {
// sending gcm token to server
Log.e(TAG, "sendRegistrationToServer: " + token);
}
private void storeRegIdInPref(String token) {
SharedPreferences pref = getApplicationContext().getSharedPreferences(Config.SHARED_PREF, 0);
SharedPreferences.Editor editor = pref.edit();
editor.putString("regId", token);
editor.commit();
}
}
7.Creare un'altra classe di servizio denominata MyFirebaseMessagingService.java. Questo riceverà messaggi Firebase.
public class MyFirebaseMessagingService extends FirebaseMessagingService {
private static final String TAG = MyFirebaseMessagingService.class.getSimpleName();
private NotificationUtils notificationUtils;
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Log.e(TAG, "From: " + remoteMessage.getFrom());
if (remoteMessage == null)
return;
// Check if message contains a notification payload.
if (remoteMessage.getNotification() != null) {
Log.e(TAG, "Notification Body: " + remoteMessage.getNotification().getBody());
handleNotification(remoteMessage.getNotification().getBody());
}
}
private void handleNotification(String message) {
if (!NotificationUtils.isAppIsInBackground(getApplicationContext())) {
// app is in foreground, broadcast the push message
Intent pushNotification = new Intent(Config.PUSH_NOTIFICATION);
pushNotification.putExtra("message", message);
LocalBroadcastManager.getInstance(this).sendBroadcast(pushNotification);
// play notification sound
NotificationUtils notificationUtils = new NotificationUtils(getApplicationContext());
notificationUtils.playNotificationSound();
}else{
// If the app is in background, firebase itself handles the notification
}
}
/**
* Showing notification with text only
*/
private void showNotificationMessage(Context context, String title, String message, String timeStamp, Intent intent) {
notificationUtils = new NotificationUtils(context);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
notificationUtils.showNotificationMessage(title, message, timeStamp, intent);
}
/**
* Showing notification with text and image
*/
private void showNotificationMessageWithBigImage(Context context, String title, String message, String timeStamp, Intent intent, String imageUrl) {
notificationUtils = new NotificationUtils(context);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
notificationUtils.showNotificationMessage(title, message, timeStamp, intent, imageUrl);
}
}
8.In l'AndroidManifest.xml aggiungere questi due servizi Firebase MyFirebaseMessagingService e MyFirebaseInstanceIDService.
<!-- Firebase Notifications -->
<service android:name=".service.MyFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<service android:name=".service.MyFirebaseInstanceIDService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
<!-- ./Firebase Notifications -->
ora semplicemente Send your First Message
Note:
* 1.Read il Doc di Google per Firebase Cloud Messaging *
2. Se si desidera migrare un App Client GCM per Android a Fir ebase cloud Messaging attenersi alla seguente procedura e Doc (Migrate a GCM Client App)
3.Android esercitazione di esempio e il codice (Receive Reengagement Notifications)
C2DM è deprecato. Si prega di utilizzare https://developer.android.com/guide/google/gcm/index.html – gigadot
ok cercherò di imparare e sviluppare il tutorial sopra – user1676640
aspetto della mia risposta qui: spero che aiuti: http: // StackOverflow. com/a/12437549/554740 – HelmiB