首页 > 解决方案 > Firebase 推送通知令牌返回空

问题描述

我正在努力让 Firbase 推送通知正常工作:

我的 Android 清单文件中有以下服务:

    <service android:name=".notifications.MyFirebaseMessagingService"
        android:permission="com.google.android.c2dm.permission.SEND">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
        </intent-filter>
    </service>
    <service android:name=".notifications.MyFirebaseInstanceIDService">
        <intent-filter>
            <action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
        </intent-filter>
    </service>

MyFirebaseInstanceIDService 的代码

    public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {

        private static final String TAG = "MyFirebaseIIDService";

        @Override
        public void onTokenRefresh() {
            String refreshedToken = FirebaseInstanceId.getInstance().getToken();
            Log.d(TAG, "Refreshed token: " + refreshedToken);
            SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
            preferences.edit().putString(Constants.FIREBASE_TOKEN, refreshedToken).apply();
    }
}

我的 StartActivity 包含以下内容

public class StartActivity extends AppCompatActivity {

public static boolean isAppRunning;

private SharedPreferences mSharedPreferences;
private final String TAG="token";
private String token;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_start);

    startService(new Intent(this,MyFirebaseInstanceIDService.class));
    mSharedPreferences = getSharedPreferences(Constants.FIREBASE_TOKEN, MODE_PRIVATE);
    token=mSharedPreferences.getString(Constants.FIREBASE_TOKEN,"");
    Log.d(TAG, "token:" + token);

}

}

您会看到我手动启动了服务(不确定是否必须),但问题是令牌始终为空。

标签: androidfirebasefirebase-cloud-messaging

解决方案


推荐阅读