小编Hey*_*You的帖子

在奥利奥相同的ANDROID_ID

根据Android 8.0行为更改,

对于安装在运行Android 8.0的设备上的应用程序,ANDROID_ID的值现在是每个应用程序签名密钥以及每个用户的范围.对于app-signing密钥,用户和设备的每个组合,ANDROID_ID的值是唯一的.因此,在同一设备上运行的具有不同签名密钥的应用程序不再看到相同的Android ID(即使对于同一用户).

为了测试上面的变化,我做了两个测试APK并发现了以下行为(在Nexus 5X,OS 8.0.0上测试过):

  • 在targetSdkVersion 26,compileSdkVersion 26,buildToolsVersion 26.0.0的情况下,从同一个Windows机器生成的两个不同的apk(以及不同的包名称)显示相同的ANDROID_ID.当使用来自不同计算机的相同包名生成APK时,将显示不同的ANDROID_ID.

以下是我的查询:

  1. 这是正确的行为吗?为什么两个不同的APK显示相同的ANDROID_ID?
  2. 如果我的应用程序的ANDROID_ID可能会更改(没有卸载/重新安装),是否有任何更改?
  3. 在Nexus 5x,OS 6.0.1,targetSdkVersion 23,compileSdkVersion 23,buildToolsVersion 25.0.0上获得相同的行为.我没有在Android O中看到任何特定的行为更改.我缺少什么?为什么会有同样的行为

android android-8.0-oreo

8
推荐指数
2
解决办法
1407
查看次数

多个sender id的情况下如何判断是否需要刷新token?

我的应用程序正在接收来自 2 个 firebase 项目的推送通知。我通过分别调用“getToken(StringauthorizedEntity, Stringscope)”来获取每个发件人 ID 的令牌。

String token1 = FirebaseInstanceId.getInstance().getToken("authorizedEntity1", "FCM");
String token2 = FirebaseInstanceId.getInstance().getToken("authorizedEntity2", "FCM");
Run Code Online (Sandbox Code Playgroud)

根据onTokenRefresh文档

当系统确定需要刷新令牌时调用。应用程序应该调用 getToken() 并将令牌发送到所有应用程序服务器。这不会被频繁调用,它是密钥轮换和处理实例 ID 更改所必需的,因为:

应用程序删除实例ID

应用程序已在新设备上恢复

用户卸载/重新安装应用程序

用户清除应用数据

由于onTokenRefresh已被弃用,我已经检查了onNewToken,根据文档

在生成默认 Firebase 项目的新令牌时调用。在应用程序安装后首次生成令牌时会调用此函数,如果令牌发生更改,则会再次调用此函数。

Q1. 如果有多个发件人 ID,如何知道哪个是默认的 Firebase 项目?

Q2。假设如果“authorizedEntity1”与默认的 firebase 项目关联,那么是否意味着仅当 token1 发生更改时才会调用 onNewToken ?或者当 token2 改变时它也会被调用?如果它对 token2 不起作用那么如何知道token2需要刷新?

Q3。参考此,我的理解是,只要需要刷新任何令牌(不仅对于默认项目),就会调用 onTokenRefresh 。这种理解正确吗?

每当系统确定token1token2需要刷新时,我想将更新的令牌发送到服务器。

注意:当我处理多个发件人 ID 时,我正在应用程序类中初始化 firebase。

android firebase firebase-cloud-messaging

5
推荐指数
1
解决办法
660
查看次数

FCM | 多个发件人ID

从GCM迁移到FCM.

在GCM中,我们可以为多个发送者ID调用getToken()方法,如下所示:

String senderIds = "112233445566,889922338899";
String token = instanceID.getToken(senderIds,
                        GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
Run Code Online (Sandbox Code Playgroud)

Q1 - 进入FCM后,是否保持相同或者我需要进行任何更改才能获得多个发送者ID的令牌?

这个引用中,我知道我可以为每个发送者ID调用getToken("senderIds1","FCM"),但我希望在进入FCM时进行最少的代码更改.

Q2不适用于FCM(与GCM相同)或我必须调用 getToken("senderIds1","FCM"); getToken("senderIds2","FCM")?

getToken("senderIds1, senderIds2", "FCM") 
Run Code Online (Sandbox Code Playgroud)

android push-notification firebase google-cloud-messaging firebase-cloud-messaging

3
推荐指数
1
解决办法
1588
查看次数