alp*_*guy 4 android firebase firebase-cloud-messaging
我要使用firebase-messaging
库,并尝试在应用启动时使用以下方法获取令牌。
FirebaseInstanceId.getInstance()。getInstanceId()。addOnSuccessListener(new OnSuccessListener(){ @Override 公共无效onSuccess(InstanceIdResult instanceIdResult){ 字符串标记= instanceIdResult.getToken(); //打印令牌 } });
应用在启动时崩溃
java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.android.gms.tasks.Task com.google.firebase.iid.FirebaseInstanceId.getInstanceId()' on a null object reference
Run Code Online (Sandbox Code Playgroud)
Android清单
<service
android:name=".MyFirebaseMessageService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
Run Code Online (Sandbox Code Playgroud)
Build.gradle:
implementation 'com.google.android.gms:play-services-analytics:16.0.5'
implementation 'com.google.firebase:firebase-messaging:17.3.4'
Run Code Online (Sandbox Code Playgroud)
此外,我试图将令牌缓存在SharedPreferences中,但似乎从未调用过onNewToken()。
@Override
public void onNewToken(String token) {
super.onNewToken(token);
SharedPreferences preference = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preference.edit();
editor.putString("TOKEN",token);
editor.apply();
}
Run Code Online (Sandbox Code Playgroud)
可能是什么问题呢?
合并清单中存在问题,合并清单中缺少以下服务。添加相同的AndroidManifest.xml
东西就像一个魅力。
<service android:name="com.google.firebase.components.ComponentDiscoveryService" >
<meta-data
android:name="com.google.firebase.components:com.google.firebase.iid.Registrar"
android:value="com.google.firebase.components.ComponentRegistrar" />
</service>
Run Code Online (Sandbox Code Playgroud)
现在一切正常。
归档时间: |
|
查看次数: |
1849 次 |
最近记录: |