相关疑难解决方法(0)

当应用程序从多任务托盘停止时,Android应用程序未收到Firebase通知

我在SO上读过类似的问题,然而,我无法从中得到正确的答案.

我有一个系统,我们向大约500个设备发送通知.

不幸的是,许多这些设备没有收到通知.我发现OPPO F1系列手机特别没有收到通知.

我发现,如果应用程序从多任务托盘中停止,则会发生这种情况.我该如何解决这个问题?

更新:我观察到当我从任务托盘关闭应用程序时,我的应用程序被强制停在应用程序管理器中.当我从任务托盘关闭Whatsapp时,仍然没有强制停止.怎么被Whatsapp处理?

android firebase firebase-cloud-messaging firebase-notifications

67
推荐指数
3
解决办法
4万
查看次数

需要从GCM迁移到FCM吗?

谷歌刚刚宣布谷歌云消息传递现在是Firebase云消息传递.这对GCM的现有用户意味着什么?需要哪些迁移(如果有的话)?

android firebase google-cloud-messaging firebase-cloud-messaging

45
推荐指数
2
解决办法
3万
查看次数

app强制停止后,GCM推送通知是否有效?

我已经习惯GCM了推送通知,现在如果我强制停止Android设备上的设置应用程序,它是否能够获得推送通知?

我看过很多帖子,说在这种情况下应用无法接收通知.

有没有可能收到通知?

android push-notification google-cloud-messaging

31
推荐指数
1
解决办法
2万
查看次数

使用FCM进行Android通知 - 谁启动了FirebaseMessagingService?

根据这里的设置指南,在示例应用程序中,A)我创建了一个extendsfirebase服务类的类.B)我把这些课程放在了AndroidManifest.xml

A)Java类

public class MyFirebaseMessagingService extends FirebaseMessagingService {

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        //a) What's the life cycle of the service? How can I ensure this method is getting called?
        //b) If the service is killed at some point, will system restart it on receiving new messages?
        Log.d(TAG, "From: " + remoteMessage.getFrom());
    }
}
Run Code Online (Sandbox Code Playgroud)

B)AndroidManifest.xml

<service
    android:name=".MyFirebaseMessagingService">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT"/>
    </intent-filter>
</service>
Run Code Online (Sandbox Code Playgroud)

然后,该应用程序可以从FCM接收通知!

这是我的问题:

  1. 谁启动了FirebaseMessagingService通知服务?必须有一些地方调用startService(),不是吗?

  2. 我的理解是,无论我的应用程序状态如何,下游通知都会传送到我的移动设备的Google Play服务.然后,我可以保证什么程度,我onMessageReceive()被调用的时候,app或者serviceswipe …

notifications android android-service firebase firebase-cloud-messaging

11
推荐指数
1
解决办法
6825
查看次数

Android firebase强制关闭后接收推送消息不起作用

我强行关闭应用程序(模拟)后收到推送消息时遇到问题.

现在,如果我发送推送消息,我会进入adb:

GCM-DMM : broadcast intent callback: result=CANCELLED forIntent { act=com.google.android.c2dm.intent.RECEIVE pkg=THE_PACKAGE_NAME (has extras) }
Run Code Online (Sandbox Code Playgroud)

这来自com.google.android.gms.persistent服务

我试图创建一个adb命令来手动调试它,但它仍然无法正常工作

adb shell am broadcast -a com.google.android.c2dm.intent.RECEIVE -c THE_PACKAGE_NAME
Run Code Online (Sandbox Code Playgroud)

结果:

Broadcasting: Intent { act=com.google.android.c2dm.intent.RECEIVE cat=[THE_PACKAGE_NAME] }
Broadcast completed: result=0
Run Code Online (Sandbox Code Playgroud)

我猜这会导致结果= 0

AndroidManifest.xml中

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="THE_PACKAGE_NAME">

        ......
    <application android:label="@string/app_name"
                android:theme="@style/AlmanappTheme"
                android:icon="@drawable/ic_launcher"
                android:name="AppController">
        ....
             <!-- [START firebase_service] -->
        <service
            android:exported="true"
            android:name=".push.MyFirebaseMessagingService">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT"/>
            </intent-filter>
        </service>
        <!-- [END firebase_service] -->
        <!-- [START firebase_iid_service] -->
        <service
            android:name=".push.MyFirebaseInstanceIDService">
            <intent-filter>
                <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
            </intent-filter>
        </service>
        <!-- [END firebase_iid_service] …
Run Code Online (Sandbox Code Playgroud)

android firebase google-cloud-messaging firebase-cloud-messaging

5
推荐指数
0
解决办法
916
查看次数

从最近的列表中滑动应用程序时,未调用Android Firebase MyFirebaseMessagingService

编辑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新)消息负载是两者的组合notificationdata。当应用程序在前台运行时,服务会触发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 …
Run Code Online (Sandbox Code Playgroud)

android firebase firebase-cloud-messaging

5
推荐指数
1
解决办法
2109
查看次数