gpt4 book ai didi

android - 每次启动我的 Android 应用程序时都需要一个新 token 吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:03:58 26 4
gpt4 key购买 nike

我知道在 Android 和 iOS 和 WP7 中(In which mobile platforms the “push token” is not permanent?) 提供给设备的推送 token 可以改变。

这意味着我们应该通过要求一个新 token 来处理这个问题,至少在我们的应用程序每次启动时都是如此。

但是,这与我到目前为止在 google 教程中发现的内容完全矛盾。(我不记得我是在哪里找到这段代码的,但我很确定它已提供通过谷歌)代码如下所示:

        //registering for push
GCMRegistrar.checkDevice(this);
GCMRegistrar.checkManifest(this);
final String regId = GCMRegistrar.getRegistrationId(this);
if (regId.equals("")) {
GCMRegistrar.register(this, SENDER_ID);
Log.i("****************","I just Registered!!");
} else {
Log.i("****************","Already registered");
}

上面的代码将只执行一次 GCMRegistrar.register(this, SENDER_ID); 行,即应用程序第一次启动时。但我想这是错误的吧?因为如果 token 发生变化,我们的应用程序将无法看到它,因为它只需要一次 token ..

编辑


实际上我只是找到了那个代码的确切位置。在这里看看:Get Started Guide

我在引用:

在onCreate()方法中,添加如下代码:

GCMRegistrar.checkDevice(this);
GCMRegistrar.checkManifest(this);
final String regId = GCMRegistrar.getRegistrationId(this);
if (regId.equals("")) {
GCMRegistrar.register(this, SENDER_ID);
} else {
Log.v(TAG, "Already registered");
}

当您注册设备时,onRegistered(Context context, String regId): 函数被调用。关于这个功能,教程说:

onRegistered(Context context, String regId): 在收到注册 Intent 后调用,将 GCM 分配的注册 ID 作为参数传递给该设备/应用程序对。通常,您应该将 regid 发送到您的服务器,以便它可以使用它向该设备发送消息。

所以它说我应该将这个 ID 发送到我的服务器。但是之前的代码告诉我们这个函数只会被调用一次!那么当 token 发生变化时会发生什么?我要如何将它刷新到我的服务器?我想我应该在每次应用程序启动时运行这个函数......

我在这里遗漏了什么吗?代码有错吗?任何想法都会有所帮助:)

最佳答案

Google 表示,如果注册 ID 在您已经注册时发生变化,注册 Intent 将再次发送,因此您的应用将在“onRegistered”中获得新的注册 ID,而无需在每次启动时请求新的注册。

Note that Google may periodically refresh the registration ID, so you should design your Android application with the understanding that the com.google.android.c2dm.intent.REGISTRATION intent may be called multiple times. Your Android application needs to be able to respond accordingly.

(取自here)

因此上面的代码应该没问题。实际上,如果您更新您的应用程序版本,此代码将返回一个空注册 ID,这将触发新的注册。

也就是说,每次启动应用程序时注册对我来说似乎更安全。

关于android - 每次启动我的 Android 应用程序时都需要一个新 token 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16457344/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com