1

我正试图在我的Android应用程序中实现FCM。在少数电话上,当应用程序处于前景/背景/遇难时收到通知。但在某些手机上,只有当应用处于前景/背景时才会收到。当应用程序被杀死时,onMessageReceived和启动程序getExtra也不会被调用。我正在使用API​​中的数据和通知对象。 这里是我的Android代码 -当应用程序被杀时,Firebase通知不会在某些手机上执行

@Override 
public void onMessageReceived(RemoteMessage remoteMessage) { 
Log.e("Here", "here"); 
if (remoteMessage.getData().size() > 0) { 
    Log.e(TAG, "Data Payload: " + remoteMessage.getData().toString()); 
    try { 
    JSONObject json = new JSONObject(remoteMessage.getData()); 
    sendPushNotification(json); 
    } catch (Exception e) { 
    Log.e(TAG, "Exception: " + e.getMessage()); 
    } 
} 
if (remoteMessage.getNotification() != null) { 
    Log.e(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody()); 
} 
} 
+0

在该电话没有接到通知,分享移动配置 –

+0

你可以参考这个链接,它会帮助你https://stackoverflow.com/questions/37711082/how-to-handle-notification-when -app-in-background-in-firebase – Raja

+0

@Raja我已经试过这个,但它不起作用。 –

回答

0

我碰到了与通知相同的问题和研究之后,我们发现,问题是设备特定的,不同的设备制造商都会有不同的处理不仅通知,但其他的服务也如VPN。

  • 不幸的是它由设备设计制造

查杀应用程序也将杀死这些服务,你将不得不教育最终用户你的应用程序没有设备的列表上工作,这是三星设备一直返回正面结果的设备。

干杯。

+0

必须有解决方法。因为即使应用程序被终止,同一设备也会从InShorts收到通知。 –

+0

嗨,根据你的问题和描述“在少数手机上,当应用程序处于前景/背景/被杀时收到通知,但在某些手机上,只有当应用程序处于前景/背景时才会收到通知。”这意味着特定的设备将阻止推送通知,正如我在答案中所解释的那样......如果在杀死应用程序或在杀死应用程序后几秒钟内意思是接收刚刚完成的通知的过程,则杀死应用程序不会“意味着每个流程或服务都会立即关闭。如果您发现我的答案有用,请投票支持。 –

+0

有一个名为InShorts的应用程序。即使应用程序被杀,它也能够推送通知。 –

0

我也遇到过类似的问题。虽然有消息称这是一个火力点问题,但更多的是关于制造商不使用Android的本地ROM。简而言之,像One Plus,MI,Oppo,Vivo等制造商使用定制ROM(重写Android股票的行为)。所以当应用程序被用户杀死时,它的所有服务也被终止,因此没有通知。解决这个问题的一种方法是让用户改变他们的设置。

原文可以找到here

0

添加BootBroadcastReceiver清单文件

<receiver 
      android:name=".OnBootBroadcastReceiver"> 
      <intent-filter> 
       <action android:name="android.intent.action.BOOT_COMPLETED"/> 
      </intent-filter> 
</receiver> 

创建下列Java文件。请在其中调用FirebaseMessagingReceiveService 。

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 

public class OnBootBroadcastReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     Intent i = new Intent("com.demo.FirebaseMessagingReceiveService"); 
     i.setClass(context, FirebaseMessagingReceiveService.class); 
     context.startService(i); 
    } 
} 
相关问题