2

在我的应用程序中,我需要通知用户具有自定义调用类型的屏幕,他必须对重要的业务决策做出响应,这非常重要,以至于他不介意可能导致的不良用户体验。如何在收到邮件时开始活动,即使应用程序已经死掉(已被清除)?

我使用FCM数据消息,但是当应用从6.0下面的设备中的当前应用列表中移除时,onRecieve方法不会被触发。

我现在用启动广播听众收听接收到的信息服务,应用程序工作时,它的前景/背景,但一旦其刷卡出去,服务为一体的应用程序被杀害停止如预期,但在设备上方6.0应用程序不是通过刷卡死亡,这是我的观察到现在。

基本上我正在寻找的是即使您的应用程序被刷掉也可以运行的服务。我知道START_STICKY的事情,它并没有帮助。请帮帮我。

+0

见我的回答一些有用的细节[这里](https://stackoverflow.com/a/39505298/4625829) –

+0

你测试什么设备? –

+0

@DavidWasser当我在低于6.0的设备上测试它时,我没有收到任何和START_STICKY标志的任何服务不重新启动,甚至前台服务在被刷掉时被杀死。但在6.0以上,我看到预期的行为。我正在使用MI,三星,联想以上和以下6.0 –

回答

0

如文档中描述和onMessageReceived()应该被称为每次数据消息到达时间(即使该应用程序被杀害或拨弄了一下)你应该只执行FCM。

如果,如果应用程序是滑开了就意味着你必须具有非标准版本的Android安装的设备的应用程序不会收到该邮件。

不幸的是,在这些设备上,这不是你的应用程序将会遇到的唯一问题。

我的建议是联系制造商并向他们解释他们的定制功能正在破坏Android API。

更多信息: Push notifications using FCM not received when app is killed android

0

创造前景的服务,始终保持运行(除非应用程序是强制关闭) https://stackoverflow.com/questions/6397754/android-implementing-startforeground-for-a-service

+0

链接无法到达,对于前台服务,我们所要做的就是创建一个通知并调用startforeground(),像这样'NotificationCompat.Builder notification = new NotificationCompat.Builder(this) .setContentTitle(“Tripin Foreground Service”) .setTicker( “这取决于你的服务”) .setContentText( “我,如果我的应用程序被杀害,杀害:(”) .setSmallIcon(R.mipmap.ic_launcher); startForeground(Constants.NOTIFICATION_ID.FOREGROUND_SERVICE, notification.build());'在你的服务中? –

0

确保您已注册的服务在Android.manifest如文档中描述的。这将仅在收到消息时才开始您的服务。您不需要持续运行服务。

https://firebase.google.com/docs/cloud-messaging/android/receive

<service 
    android:name=".MyFirebaseMessagingService"> 
    <intent-filter> 
     <action android:name="com.google.firebase.MESSAGING_EVENT"/> 
    </intent-filter> 
</service> 
+0

已经做到了,看起来这个服务是通过google play服务处理的,请让我知道更多见解 –

+0

完整的说明在我提供的链接文档中。 – Kuffs

+0

他们不会告诉我们关于'当应用程序处于被杀状态'的任何内容,它只关于前景和背景状态, –

相关问题