Android FCM显示触发服务通知

我尝试在我的应用中实现FCM,但是我遇到了问题。每当我发送通知,而不是调用我的自定义代码,它只显示默认通知。我究竟做错了什么?Android FCM显示触发服务通知

这些都是服务:

<service 

android:name="com.backgroundws.MyFirebaseMessagingService">

<intent-filter>

<action android:name="com.google.firebase.MESSAGING_EVENT"/>

</intent-filter>

</service>

<service

android:name="com.backgroundws.MyFirebaseInstanceIDService">

<intent-filter>

<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>

</intent-filter>

</service>

这是我的Java代码:

public class MyFirebaseMessagingService extends FirebaseMessagingService { 

@Override

public void onMessageReceived(RemoteMessage remoteMessage) {

Log.d("MyFirebaseMessaging", "GotMessage");

WSListener.sendEvent(this, "Push");

}

}

而且我认为这在logcat的时候我得到的设备上的通知:

I/SendBroadcastPermission: action:com.google.android.gms.gcm.ACTION_SCHEDULE, mPermissionType:0 

I/SendBroadcastPermission: action:com.google.android.gms.gcm.ACTION_SCHEDULE, mPermissionType:0

这是我如何发送通知:

function send_gcm_notify($reg_id, $message, $url, $key) { 

$fields = array(

'to' => $reg_id ,

'priority' => "high",

"notification" => array("body"=>$message),

'data' => array("url"=> $url)

);

$headers = array(

'Content-Type: application/json',

'Authorization: key=' . $key

);

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://fcm.googleapis.com/fcm/send");

curl_setopt($ch, CURLOPT_POST, true);

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));

$result = curl_exec($ch);

if ($result === FALSE) {

//die('Problem occurred: ' . curl_error($ch));

}

curl_close($ch);

return $result;

}

当然我测试和路径服务是正确的。

回答:

如果您希望服务器的内容在两种模式(后台和前台)中都有通知,则必须仅从“数据”内的服务器发送有效内容。 更多你可以参考这里How to handle Android FCM Messages when application is in Background with data payload?

以上是 Android FCM显示触发服务通知 的全部内容, 来源链接: utcz.com/qa/258205.html

回到顶部