Firebase云消息传递令牌刷新异常

时间:2019-07-21 07:54:40

标签: java android

我正在开发一个应用程序,其中我正在使用FCM向特定设备发送通知。我正在正确获取令牌,并且已发送通知,一切正常,但是在一段时间后应用崩溃并仅在我再次卸载并安装后才打开。  这是我得到的错误

      E/AndroidRuntime: FATAL EXCEPTION: TokenRefresher
      Process: com.example.ibrahimsahko.zee, PID: 20720
    java.lang.NoSuchFieldError: No static field 
    PREFER_HIGHEST_OR_REMOTE_VERSION_NO_FORCE_STAGING of type 
    Lcom/google/android/gms/dynamite/DynamiteModule$VersionPolicy; in 
   class Lcom/google/android/gms/dynamite/DynamiteModule; or its 
     superclasses (declaration of ' 
   com.google.android.gms.dynamite.DynamiteModule' appears in 
   /data/app/com.example.ibrahimsahko.zee-2/base.apk)
    at com.google.android.gms.flags.FlagValueProvider.initialize(Unknown 
    Source)
    at com.google.android.gms.flags.FlagRegistry.initialize(Unknown 
    Source)
    at com.google.firebase.auth.internal.zzx.initialize(Unknown Source)
    at com.google.firebase.auth.internal.zzt.run(Unknown Source)
    at android.os.Handler.handleCallback(Handler.java:815)
    at android.os.Handler.dispatchMessage(Handler.java:104)
    at android.os.Looper.loop(Looper.java:207)
    at android.os.HandlerThread.run(HandlerThread.java:61)

这就是我在newtoken上获取令牌的方式

    public class FirebaseCloudMessagingService extends 
     FirebaseMessagingService {

    @Override
    public void onNewToken(String s) {
    super.onNewToken(s);
   }

   } 

这就是我获取当前令牌并存储的方式

        FirebaseInstanceId.getInstance().getInstanceId()
        .addOnSuccessListener(new OnSuccessListener<InstanceIdResult>() {

           @Override

        public void onSuccess(InstanceIdResult instanceIdResult) {
        String deviceToken = instanceIdResult.getToken();

        firebaseFirestore.collection("Users")

        .document(userID).update("token_id", deviceToken)

     .addOnCompleteListener(new OnCompleteListener<Void>() {

        @Override

      public void onComplete(@NonNull Task<Void> task) {

      if(task.isSuccessful()){

      Intent toMain = new Intent(SignIn.this, MainActivity.class);

      toMain.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | 
      Intent.FLAG_ACTIVITY_CLEAR_TASK);

       startActivity(toMain);

      finish();

       Bungee.fade(SignIn.this);

      }else{

      Toast.makeText(SignIn.this, 
      Objects.requireNonNull(task.getException()).getMessage(), 
       Toast.LENGTH_SHORT).show();
            }
               }
              });
                }
                 });

我怀疑是图书馆,但我正在使用更新的图书馆

      classpath 'com.google.gms:google-services:4.0.1'

0 个答案:

没有答案