FCM을 처음 사용합니다.
firebase / quickstart-android 에서 샘플을 다운로드 하고 FCM 빠른 시작을 설치합니다. 하지만 앱 의 LOG TOKEN 버튼을 눌러도 로그에서 토큰을 얻을 수 없습니다 .
그런 다음 Firebase 콘솔로 메시지를 보내고 내 앱 패키지 이름을 타겟팅하도록 설정합니다. 수신 메시지를 받았습니다.
FCM을 사용할 수 있는지 알고 싶습니다 .GCM은 모두 괜찮습니다.
해결책:
저는 Android 개발자가 아니기 때문에 백엔드 개발자 일뿐입니다. 그래서 그것을 해결하는 데 시간이 걸립니다. 제 생각에는 샘플 앱에 몇 가지 버그가 있습니다.
암호:
RegistrationIntentService.java
public class RegistrationIntentService extends IntentService {
private static final String TAG = "RegIntentService";
public RegistrationIntentService() {
super(TAG);
}
@Override
protected void onHandleIntent(Intent intent) {
String token = FirebaseInstanceId.getInstance().getToken();
Log.i(TAG, "FCM Registration Token: " + token);
}
}
MyFirebaseInstanceIDService.java
public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {
private static final String TAG = "MyFirebaseIIDService";
/**
* Called if InstanceID token is updated. This may occur if the security of
* the previous token had been compromised. Note that this is called when the InstanceID token
* is initially generated so this is where you would retrieve the token.
*/
// [START refresh_token]
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
// String refreshedToken = FirebaseInstanceId.getInstance().getToken();
// Log.d(TAG, "Refreshed token: " + refreshedToken);
//
// // TODO: Implement this method to send any registration to your app's servers.
// sendRegistrationToServer(refreshedToken);
//
Intent intent = new Intent(this, RegistrationIntentService.class);
startService(intent);
}
// [END refresh_token]
/**
* Persist token to third-party servers.
* <p>
* Modify this method to associate the user's FCM InstanceID token with any server-side account
* maintained by your application.
*
* @param token The new token.
*/
private void sendRegistrationToServer(String token) {
// Add custom implementation, as needed.
}
}
MainActivity.java에 추가하십시오.
Intent intent = new Intent(this, RegistrationIntentService.class);
startService(intent);
위의 작업을 수행하면 Logcat에서 토큰을 얻습니다. 하지만 마지막으로 편리한 방법 을 찾았 습니다. 디버그 모드를 사용하여 샘플 앱 을 설치하면 처음 설치할 때 토큰을 얻을 수 있습니다.
하지만 설치시 로그를 인쇄 할 수없는 이유를 모르겠습니다. 모바일 시스템과 관련이있을 수 있습니다.
그리고 알림을받을 수없는 이유. FirebaseMessagingService.onMessageReceived 가 sendNotification을 호출하지 않았습니다.