在聊天应用程序中使用什么通知系统?
我正在使用Android中的Firebase数据库开发聊天应用程序。
我已经完成了核心(聊天和用户列表活动),但我还没有做通知系统。
我想实现谷歌FCM,因为我正在使用firebase,但我发现它有一个漏洞,因为我似乎无法处理传递给不在前台的iOs应用程序的所有通知。
如数据通知文档中所示
在iOS上,FCM存储消息并仅在应用程序位于前台并建立FCM连接时传递消息。 在Android上,客户端应用程序在onMessageReceived()中接收数据消息,并可以相应地处理键值对。
即使应用程序处于后台,我也需要捕获数据通知,我需要特别说明,因为我想在应用程序图标上更新我的徽章计数器,以便让用户知道他有多少未读消息。
我现在尝试OneSignal解决方案即使在后台也可以接收通知,它是免费的并且与GCM接口。 我很遗憾没有留在Google,但如果我无法使用FCM更新徽章数量,我必须向另一方寻求帮助。
任何考虑将不胜感激。
事实上,OneSignal探索了一种实现此行为的function。 它是通知有效 content-available
中的content-available
值。 好消息是iOS 7及以上版本。 因此,如果您可以在FCM中自定义有效负载,则可以。 只需在后台模式下激活remote-notification
并在application(didReceiveRemoteNotification:fetchCompletionHandler:)
处理徽章更新application(didReceiveRemoteNotification:fetchCompletionHandler:)
即可开始使用。
由于FirebaseMessagingService正在运行,因此当app处于后台或未运行时,使用以下代码从服务器获取徽章。
如果您对应用程序图标上的显示徽章有任何疑问而不是评论它,因为就在昨天我确实在应用程序图标上显示徽章。
public class Custom_FirebaseMessagingService extends FirebaseMessagingService { private static final String TAG = "FirebaseMsgService"; //private Activity strPushClickDesti; String activityName; @Override public void zzm(Intent intent) { Log.i("uniqbadge", "zzm"); Set keys = intent.getExtras().keySet(); for (String key : keys) { try { Log.i("uniq", " " + key + " " + intent.getExtras().get(key)); if (key.equals("badge")) { String cnt = intent.getExtras().get(key).toString(); int badgeCount = Integer.valueOf(cnt); Log.i("uniq", " badge count " + badgeCount); ShortcutBadger.applyCount(this, badgeCount); Log.i("uniq", " " + "end"); } } catch (Exception e) { Log.i("uniqbadge", "zzm Custom_FirebaseMessagingService" + e.getMessage()); } } super.zzm(intent); }
- 如何在跨平台项目中共享代码和资产?
- 是否有可能在iOS,Android,浏览器之间传输videop2p(或其他技术)
- React Native:自定义字体在Android和iOS上的呈现方式不同
- 使用React Native下载数据文件以供脱机使用
- Android,Windows Phone和iOS可以使用的内部和外部数据库是什么?
- UIWebView清除caching后应用程序退出&不caching图像脱机
- NSNonLossyASCIIStringEncoding等效于Android
- 云function意外令牌 – 在apns-collapse-id中
- 与Ionic1&ngCordova Native Audio插件一起循环播放audio