【问题标题】:OnNewToken call two times?OnNewToken 调用两次?
【发布时间】:2018-08-10 18:57:19
【问题描述】:

根据 onNewToken 的文档,

在为默认 Firebase 项目生成新令牌时调用。在首次生成令牌时在应用安装后调用此方法,如果令牌更改则再次调用。

第一季度。这是否意味着,它被调用了 2 次???

第二季度。我想将更新的令牌发送到服务器。如果 Q1 的答案是肯定的,那么如何检查由于令牌更改而收到 onNewToken 以便我可以将更新的令牌发送到服务器?

【问题讨论】:

    标签: android firebase push-notification


    【解决方案1】:

    令牌可能在以下情况下发生变化:

    • 应用删除实例 ID。
    • 应用已在新设备上恢复
    • 用户卸载/重新安装应用程序
    • 用户清除应用数据。

    您可以创建自己的从“FirebaseMessagingService”扩展的类,以将更新的令牌发送到服务器:

    public class MyFirebaseMessagingService extends FirebaseMessagingService {
    
        public MyFirebaseMessagingService() {
        }
    
        /**
        * Called if InstanceID token is updated.
        */
        @Override
        public void onNewToken(String s) {
            //send updated token to server
        }
    }
    

    你应该在清单中注册它:

        <service android:name=".MyFirebaseMessagingService">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT" />
            </intent-filter>
        </service>
    

    【讨论】:

    • 应用删除Instance ID后,什么时候去onNewToken()?
    • @Coder123 要补充这个问题,onNewToken() 是否会在后台调用,还是仅在应用程序处于前台时调用?
    【解决方案2】:

    您不会事先知道它会被准确地调用两次。例如,用户可能永远不会在新设备上恢复应用程序,因此它可能只会被调用一次。或者一个用户可能会执行多次,它会被调用两次以上。

    至于决定做什么,通常逻辑不需要考虑令牌是新生成还是更新,因为在这两种情况下,令牌现在都是服务器应该使用的,所以你可以将它发送到无条件服务器。

    【讨论】:

      猜你喜欢
      • 2019-06-25
      • 1970-01-01
      • 2020-04-17
      • 2021-11-18
      • 2022-12-09
      • 2016-10-17
      • 2013-12-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多