应用关闭时未收到 Android 推送通知

Posted

技术标签:

【中文标题】应用关闭时未收到 Android 推送通知【英文标题】:Android push notifications not being received when app closed 【发布时间】:2013-10-18 22:10:10 【问题描述】:

我遵循了 PushSharp 存储库中的示例: PushSharp android Client Sample

如果应用程序处于打开状态或在后台(通过点击主页或返回按钮),一切都运行良好。但是,如果我通过在应用程序管理器中将其滑开来关闭应用程序,我将不再收到通知。

我的假设是,由于 PushHandlerService 被标记为 [Service],即使应用程序关闭,它也会保持打开状态并继续侦听通知。有没有办法在应用关闭时继续接收通知,还是我做错了?

我会包含代码,但我所得到的几乎完全来自上面链接中的示例。

编辑:

我尝试在应用程序启动时触发 PushClient.Register,即使设备已经注册,希望这会在 PushHandlerService 未启动时启动。即使在每次启动应用程序时重新注册,当应用程序关闭时我仍然没有收到通知。

【问题讨论】:

【参考方案1】:

您是否尝试过使用调试或发布模式?当我在调试模式下启动我的应用程序时,我也遇到了同样的情况。

【讨论】:

这对我帮助很大。当我刷掉我的应用程序时,我没有看到推送通知,但是当我尝试发布构建配置时,它工作得很好! 感谢@irreal 的反馈 在我的 gradle 构建配置中注释掉 debuggable true 后,我能够在我的 S8 上接收到通知,同时关闭应用程序并从最近的应用程序中清除。感谢您的提示!【参考方案2】:

因此,事实证明,某些 Android 设备的电池或受保护的应用设置会导致通知不显示。例如,在华为 EMUI 设备中,进入“受保护的应用程序”设置并打开受保护的开关可以使应用程序即使在应用程序终止后也能收到推送通知。

【讨论】:

【参考方案3】:

此行为可能是特定于设备的。我在使用 EMUI 的华为设备上也有同样的经历。可以通过调整省电设置来解决。

看到这个问题:Remote Push Notifications and terminated Apps

【讨论】:

【参考方案4】:

如果您希望您的服务在应用程序被终止的情况下继续运行,那么您应该在 AndroidManifest.xml 文件的服务标签中添加以下内容。

android:stopWithTask="false"

如果您使用 GCM 进行推送通知,并希望在通知到达时运行服务,那么您必须在 AndroidManifest.xml 文件中将您的服务注册为 GCM 接收器。您可以通过添加以下代码来做到这一点

<service
    android:name=".yourPushService"
    android:exported="false">
    <intent-filter>
        <action android:name="com.google.android.c2dm.intent.RECEIVE" />
    </intent-filter>
 </service>

【讨论】:

以上是关于应用关闭时未收到 Android 推送通知的主要内容,如果未能解决你的问题,请参考以下文章

关闭 android 应用程序时未收到 Azure 推送通知

IBM Worklight 5.0.6.1 - 关闭电话/应用程序时未收到推送通知

系统刚启动时未收到 FCM 通知

应用程序处于前台时未收到 Firebase 推送通知

应用关闭或被杀时未收到 Android FCM 通知

应用程序在前台时未收到推送通知