Coo*_*Coo 5 android firebase firebase-cloud-messaging
编辑24/11/2016: 我刚从Firebase支持小组收到消息。他们认为这是华硕的问题。我使用的设备是Asus ZenFone 2 Laser。这是他们的回应:
这里的问题是Google无法控制制造商如何自定义其android版本。如果Asus遵循Android准则,则通知应该可以正常工作(就像在其他设备上一样)。
我们发现的一件事是,某些手机将应用置于强制停止状态,这阻止了应用接收通知。
从您的测试结果来看,情况似乎并非如此。但是,华硕还有许多其他方法可以阻止通知正常工作,但是很遗憾,我们无法检查所有通知。
最好联系华硕支持并让我们知道是否有任何新闻。
由于这对我的客户来说是一个低优先级的问题,因此我暂时不做进一步探讨。不幸的是,我没有时间在其他设备上测试相同的问题。如果将来这种情况有所改变,我将相应地更新此问题。到现在为止,我将认为这尚未解决。我想知道其他品牌的手机是否存在相同的问题。
对于华硕用户,有一件事情要考虑:有些省电设置会禁用通知功能。
编辑30/09/2016: 我已经联系Firebase支持有关此问题。他们似乎同意亚瑟·汤普森所说的话:
有趣的是,我的应用似乎并未停止。运行adb shell dumpsys package | grep stopped
我的包时返回:
User 0: installed=true hidden=false stopped=false notLaunched=false enabled=0
Run Code Online (Sandbox Code Playgroud)
这表明它尚未停止,仍然应该接收消息(根据非常有帮助的Firebase支持工程师的说法)。但是,该应用程序未收到消息。
编辑27/09/2016:
我已经notification
在有效负载中省略了该data
对象,而是将信息移到了该对象上。这不能解决问题。我想我对这个问题还不够清楚。问题是,当该应用程序被杀死(从最近退出)时,该服务将不再被调用或接收通知。
原始帖子
有类似的帖子在那里,但没有一个解决这个问题或提供解决方案。
我正在实施FCM以获取通知。(我是相当的FCM新)消息负载是两者的组合notification
和data
。当应用程序在前台运行时,服务会触发onMessageReceived()
。当应用程序在后台运行时(即,我按下主页按钮),onMessageReceived()
不会触发(按预期),而只是显示一条通知。我仍然可以在MyFirebaseMessagingService.onCreate()
和上看到日志语句onDestroy()
,这很棒。
现在,当我按下“最近使用的应用程序”按钮并从列表中刷出该应用程序以将其关闭时,我不再收到任何通知。onCreate()
并且onDestroy()
不再被称为。没有通知出现。我也希望在这种情况下出现一条通知。
有效负载示例:
{
"to":"token",
"priority":"high",
"notification": {
"body":"hello",
"title":"Message from Mom",
"click_action":"ACTIVITY_MAIN"
},
"data":{
"open":"chat"
}
}
Run Code Online (Sandbox Code Playgroud)
FCM服务:
public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onCreate() {
super.onCreate();
Log.v(DmcApplication.TAG, "Service Created");
}
@Override
public void onDestroy() {
super.onDestroy();
Log.v(DmcApplication.TAG, "Service Destroyed...");
}
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Log.v(DmcApplication.TAG, "Message received!");
EventBus.getDefault().post(new MessageEvent(remoteMessage.getNotification().getBody()));
}
}
Run Code Online (Sandbox Code Playgroud)
舱单位(如果相关)
<service
android:name="com.example.package.myFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
Run Code Online (Sandbox Code Playgroud)
日志:
//Log when app is in foreground and message comes in:
V/coo: Service Created
V/coo: Message received!
V/coo: Service Destroyed...
//Log when app is in background and message comes in:
V/coo: Service Created
V/coo: Service Destroyed...
//Log when app is killed:
<silence...>
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激,因为我已经坚持了好几天了。
小智 2
我遇到了同样的问题,查看您的“priority:high”字符串,看起来您正在发送到 Android 和 iOS。我最终去掉了消息的通知部分,只是将我需要的信息放入数据消息中。即使数据负载部分处于后台或从最近的应用程序中删除,数据负载部分也会触发您的服务。
在我的服务器上,我检查用户是否从 iOS 设备或 Android 设备注册了令牌,并相应地发送了有效负载,其中包含 iOS 设备的通知负载和 Android 设备的数据负载。
归档时间: |
|
查看次数: |
2109 次 |
最近记录: |