android – 在一个应用程序中使用2个或更多GCM Intent服务
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了android – 在一个应用程序中使用2个或更多GCM Intent服务,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2379字,纯文字阅读大概需要4分钟。
内容图文
![android – 在一个应用程序中使用2个或更多GCM Intent服务](/upload/InfoBanner/zyjiaocheng/827/46356d51f4994864a7908c6f04d1be08.jpg)
我正在编写一个与Smooch和Carnival集成的应用程序.这两个库都使用定义GCM Intent Service接收消息的标准方法接收GCM推送消息.
当我只使用Smooch时,一切都很棒.当我只使用嘉年华时,一切都很棒.当我尝试使用两者时,问题就出现了.我发现GCM接收器只是启动清单中列出的第一个定义com.google.android.c2dm.intent.RECEIVE意图的服务.
事实上,我发现我的build.gradle中列出的库的顺序会影响它们的清单合并到应用程序清单中的顺序.所以,如果我把smooch放在第一位,那就有效(但狂欢节没有收到任何东西).如果我把嘉年华放在第一位,那就有效(但是Smooch从来没有收到任何东西).
当我不控制任何一个时,如何处理多个GCM意图服务?通常,应用程序应如何定义和管理多个GCM意图服务?
最佳答案:
您无法在Carnival和Smooch中工作的原因是两个库都注册了自己的GcmListenerService,而在Android中,清单中定义的第一个GcmListenerService将接收所有GCM消息.
我主要根据以下SO文章为您提供解决方案:
Multiple GCM listeners using GcmListenerService
The best solution would be to just have one GcmListenerService implementation, and have this handle messages for both.
要指定您自己的GcmListenerService,请按照Google’s Cloud Messaging Documentation中的说明进行操作.
Smooch提供了在您拥有自己的GCM注册时禁用其内部GCM所需的工具.
为此,只需在初始化Smooch时调用setGoogleCloudMessagingAutoRegistrationEnabled:
Settings settings = new Settings("<your_app_token>");
settings.setGoogleCloudMessagingAutoRegistrationEnabled(false);
Smooch.init(this, settings);
在您自己的GcmRegistrationIntentService中,调用Smooch.setGoogleCloudMessagingToken(令牌);用你的令牌.
完成后,您将能够将GCM消息传递给您想要的任何GCM接收器.
@Override
public void onMessageReceived(String from, Bundle data) {
final String smoochNotification = data.getString("smoochNotification");
if (smoochNotification != null && smoochNotification.equals("true")) {
data.putString("from", from);
Intent intent = new Intent();
intent.putExtras(data);
intent.setAction("com.google.android.c2dm.intent.RECEIVE");
intent.setComponent(new ComponentName(getPackageName(), "io.smooch.core.GcmService"));
GcmReceiver.startWakefulService(getApplicationContext(), intent);
}
}
编辑
从Smooch版本3.2.0开始,您现在可以通过在onMessageReceived中调用GcmService.triggerSmoochGcm来更轻松地触发Smooch的通知.
@Override
public void onMessageReceived(String from, Bundle data) {
final String smoochNotification = data.getString("smoochNotification");
if (smoochNotification != null && smoochNotification.equals("true")) {
GcmService.triggerSmoochGcm(data, this);
}
}
内容总结
以上是互联网集市为您收集整理的android – 在一个应用程序中使用2个或更多GCM Intent服务全部内容,希望文章能够帮你解决android – 在一个应用程序中使用2个或更多GCM Intent服务所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。