Android 在聊天应用程序中使用什么通知系统?
我正在用Android中的Firebase数据库开发一个聊天应用程序 我已经完成了核心(聊天和用户列表活动),但还没有完成通知系统 我想在使用firebase时实现Google FCM,但我发现了一个漏洞,因为我似乎无法处理所有发送到不在前台的iOs应用程序的通知 正如在 在iOS上,FCM存储消息并仅在应用程序位于前台且已建立FCM连接时发送消息。在Android上,客户端应用程序在onMessageReceived()中接收数据消息,并可以相应地处理键值对 我需要捕捉数据通知,即使应用程序在后台,我也需要这样做,因为我想更新应用程序图标上的徽章计数器,让用户知道他有多少未读消息 我现在尝试的解决方案可以收到通知,即使在后台,它是免费的,并与GCM接口。我很难过不能和谷歌呆在一起,但是如果我不能用FCM更新徽章数量的话,我就得找另一边Android 在聊天应用程序中使用什么通知系统?,android,ios,notifications,Android,Ios,Notifications,我正在用Android中的Firebase数据库开发一个聊天应用程序 我已经完成了核心(聊天和用户列表活动),但还没有完成通知系统 我想在使用firebase时实现Google FCM,但我发现了一个漏洞,因为我似乎无法处理所有发送到不在前台的iOs应用程序的通知 正如在 在iOS上,FCM存储消息并仅在应用程序位于前台且已建立FCM连接时发送消息。在Android上,客户端应用程序在onMessageReceived()中接收数据消息,并可以相应地处理键值对 我需要捕捉数据通知,即使应用程序在
任何考虑都将不胜感激。事实上,OneSignal开发了一个功能来实现此行为。它是中可用的
内容
值。好消息是,这是iOS 7及以上版本所固有的。因此,如果您可以在FCM中自定义有效负载,这是可能的。只要在中激活远程通知
并在中处理徽章更新,您就可以开始了。当应用程序处于后台或未运行时,使用以下代码从服务器获取徽章,因为您的FirebaseMessagingService正在运行
如果你对在应用程序图标上显示徽章有任何疑问,请发表评论,因为就在昨天,我在应用程序图标上显示了徽章
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<String> 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);
}
公共类自定义\u FirebaseMessagingService扩展FirebaseMessagingService{
私有静态最终字符串TAG=“FirebaseMsgService”;
//私人活动strPushClickDesti;
字符串activityName;
@凌驾
公共无效zzm(意向){
Log.i(“uniqbadge”、“zzm”);
Set keys=intent.getExtras().keySet();
用于(字符串键:键){
试一试{
Log.i(“uniq”,“”+key+“”+intent.getExtras().get(key));
if(钥匙相等(“徽章”)){
字符串cnt=intent.getExtras().get(key.toString();
int badgeCount=整数.valueOf(cnt);
Log.i(“uniq”、“徽章计数”+徽章计数);
ShortcutBadger.applyCount(这个,badgeCount);
Log.i(“uniq”和“+”end”);
}
}捕获(例外e){
Log.i(“uniqbadge”、“zzm Custom_FirebaseMessagingService”+e.getMessage());
}
}
super.zzm(意图);
}
但OneSignal有完全相同的限制,因为这不是谷歌的错,而是苹果的设计决定。在iOS 9之前,你根本无法在后台处理收到的远程通知。只有在新的iOS 10中,苹果才允许这样做。此外,当通知到达时,系统会自动更新徽章。OSHandleNotificationR当应用程序收到通知时调用eceivedBlock。注意:这仅在应用程序处于焦点时调用。如果你需要在应用程序处于后台时调用此函数,以便在发送通知时将内容设置为true。-我只需要使用此功能进行徽章计数,如果fcm默认提供此功能,我可以继续使用。什么zzz()方法到底做了什么?