gpt4 book ai didi

android - 使用 GcmListenerService 的多个 GCM 监听器

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:46:47 34 4
gpt4 key购买 nike

Google 建议使用 GcmListenerService 代替 GcmBroadcastReceiver。

正在制作一个使用 GCM 的库项目(com.android.library 插件)。当应用程序项目(com.android.application 插件)不使用 GCM 时,它运行良好。

当应用程序项目自己使用 GCM 时,不会调用库项目接收器!

库模块在其 list 中定义了 GCM 权限以及接收者和服务条目。应用模块在它自己的 list 中定义了它的服务入口。

使用 GcmBroadcastReceiver 这可能是可能的,因为它是一个广播。在这里看到了很多相同的问题。由于弃用,不想使用 GcmBroadcastReceiver。

有什么方法可以让它工作吗?

编辑:将调用哪个服务取决于它在合并的 list xml 中定义的顺序。如果我颠倒顺序,就会调用另一个服务!有什么方法可以同时调用这两种服务吗?

最佳答案

@morepork 已经正确回答了这个问题。我只是回答这个问题以添加代码 fragment 。

这当然不是完美的解决方案,但目前我还没有找到更好的解决方案。

我的代码是这样的:

@Override
public void onMessageReceived(String from, Bundle data) {
if(!"MY_SENDER_ID".equals(from)) {
data.putString("from", from);

Intent intent = new Intent();
intent.putExtras(data);
intent.setAction("com.google.android.c2dm.intent.RECEIVE");
intent.setComponent(new ComponentName(getPackageName(), "my.application.packageId.MyGcmListenerService"));

GcmReceiver.startWakefulService(getApplicationContext(), intent);
}

需要确保启动合并 list 中定义的所有服务监听器,并且该监听器具有最高优先级。我知道某种约束。

编辑: 刚刚反编译了 com.google.android.gms.gcm.GcmReceiver 类,它并没有比以前的 GcmBroadcastReceiver 做得更好。只是额外处理 token 刷新。 所以最好只在需要多次回调时使用GcmBroadcastReceiver。

关于android - 使用 GcmListenerService 的多个 GCM 监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32050275/

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