gpt4 book ai didi

android - 2 GCM registrationId 相同的 android 应用程序

转载 作者:行者123 更新时间:2023-11-29 00:08:47 25 4
gpt4 key购买 nike

我的应用程序中有 2 个 GCM BroadcastReceivers(一个用于集成在我的应用程序中的 android 库,一个用于我自己的应用程序)。它们都在 list 中注册并且具有相同的类别(这是我的应用程序包名称)。

两者都使用 register() 函数注册,并且都接收到不同的有效 registrationId(因为两者的 senderId 不同)。

我的问题是我一切正常(两个接收者都收到推送通知)但是在尝试从服务器发送推送几个小时后我在我的服务器(android 库 regId)和 registrationId 中遇到“NotRegistered”问题突然间似乎无效了。

所以我的问题是,我能否在具有不同 senderId 的同一应用程序中拥有 2 个不同的 GCM“机制”,而不会在 GCM 服务器上发生冲突或某种形式?

最佳答案

在那种情况下,它永远不会产生冲突,因为两者将作为不同的应用程序工作(两者都有不同的 SENDER_ID)。

检查以下注释:

1) 确保为库和应用程序添加了不同的类别名称(使用 INTENT-FILTER):

<receiver
android:name=".xxxxx"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="com.xxxx" />
</intent-filter>
</receiver>

2) 有时 Reg Id 会自动更改,因此请尝试保存前一个并每次检查它是否相同,如果不相同,则必须使用您的服务器更新新的。

更新:

发送消息时,您指定了一个注册 ID,该 ID 隐式链接到生成它的应用程序和设备的包名称。只有请求注册 ID 的应用程序才会收到您的消息。所以它会发生冲突,因为您在不同的应用程序中使用相同的库(相同的包名称)。

因此您的解决方案可能是使用库在 SingleToneClass 中完成与 GCM 相关的所有工作。您将在其中传递您的应用程序包名称以向 GCM 注册。因此,无论何时您将库与不同的应用程序一起使用,它都会引用不同的包名称,并且 SENDER_ID 将相同,但不会引起问题,因为包名称将被更改。

关于android - 2 GCM registrationId 相同的 android 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31802030/

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