我的手机未收到Messenger的Firebase reg ID,仅在模拟器上

时间:2018-12-03 09:02:25

标签: android firebase notifications firebase-cloud-messaging

我想向我的android应用发送推送通知。问题是当我在手机上运行该应用时,我无法获得注册ID,但是当我在模拟器上运行它时,它可以完美运行并获得注册。有什么想法吗?如果需要的话是代码

MyFirebaseInstanceID.java

@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.apply();
    }

1 个答案:

答案 0 :(得分:1)

根据Firebase FirebaseInstanceIdService,现已弃用。

您应该尝试此操作以获得令牌!

FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener( MyActivity.this,  new OnSuccessListener<InstanceIdResult>() {
     @Override
     public void onSuccess(InstanceIdResult instanceIdResult) {          
           String newToken = instanceIdResult.getToken();    
     }
 });