1.SetUp 새 프로젝트 또는 Firbase 콘솔에서 가져 오기 프로젝트 (https://firebase.google.com/)
2.Add 동일한 패키지 이름의 Firebase 앱의 앱.
3. "google-services.json"파일을 가져 와서 해당 파일을 프로젝트의 응용 프로그램 폴더에 저장하십시오.이 파일에는 Google 서비스의 모든 URL과 키가 포함되어 있으므로이 파일을 변경하거나 편집하지 마십시오.
4. Project for Firebase에 새로운 Gradle 종속성을 추가하십시오.
//app/build.gradle
dependencies {
compile 'com.google.firebase:firebase-messaging:9.6.0'
}
apply plugin: 'com.google.gms.google-services'
5. 우리가 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.
는 것입니다 각 응용 프로그램에 대해 고유합니다 중포 기지 등록 ID를 수신라는 클래스 MyFirebaseInstanceIDService.java를 만듭니다. 등록 ID는 단일 장치로 메시지를 보내는 데 사용됩니다. MyFirebaseMessagingService.java 이름 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.Create 하나 개 이상의 서비스 클래스입니다. 이것은 firebase 메시지를 받게됩니다. AndroidManifest.xml을 8.In
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);
}
}
이 두 중포 기지 서비스 MyFirebaseMessagingService 및 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 -->
단순히 Send your First Message
참고 : Firebase Cloud Messaging *
에 대한
* 1.Read Google 문서 당신이를 마이그레이션 할 2.If Android 용 GCM 클라이언트 앱 전나무 EBASE 클라우드 메시징은 다음 단계 및 문서 (Migrate a GCM Client App)
3.Android 샘플 튜토리얼 및 코드 (Receive Reengagement Notifications)
C2DM가되지 않습니다를 따르십시오. https://developer.android.com/guide/google/gcm/index.html – gigadot
을 사용하십시오. 위의 튜토리얼을 배우고 개발하려고합니다. – user1676640
내 대답을보세요. 도움이 되길 바랍니다. http : // stackoverflow. com/a/12437549/554740 – HelmiB