【问题标题】:Android FCM show notification with triggering service带有触发服务的 Android FCM 显示通知
【发布时间】:2017-12-02 20:32:06
【问题描述】:

我尝试在我的应用中实现 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;

    }

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

【问题讨论】:

  • 想添加最重要的信息,通知数据?
  • 已编辑。密钥和 reg_id 是正确的,因为我确实收到了通知。
  • 我不想破译你的 php.ini 文件。显示实际的 json 数据
  • 尝试仅在 'data' 内发送 $'message'。删除“通知”。

标签: android firebase google-cloud-messaging firebase-cloud-messaging


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-10
    • 2022-01-06
    • 1970-01-01
    • 2017-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多