Android FCM显示通过触发服务通知

11 浏览
0 Comments

Android FCM显示通过触发服务通知

我尝试在我的应用中实现 FCM,但是遇到了一个问题。每当我发送通知时,它只显示默认通知,而没有调用我的自定义代码。我做错了什么?

以下是相关的服务:


    
        
    


    
        
    

这是我的 Java 代码:

public class MyFirebaseMessagingService extends FirebaseMessagingService {
    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        Log.d("MyFirebaseMessaging", "GotMessage");
        WSListener.sendEvent(this, "Push");
    }
}

当我在设备上收到通知时,日志中显示如下内容:

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;
}

当然,我已经测试过服务的路径是正确的。

0
0 Comments

问题原因:

在Android FCM中,当应用程序处于后台时,如果希望服务器的内容和通知同时显示,必须从服务器发送负载到"data"中。

解决方法:

参考以下链接中的解决方法:How to handle Android FCM Messages when application is in Background with data payload?

0