php - 从服务器端向 Android 设备发送 FCM 消息

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

随着新的更新,现在将使用 FCM。

我尝试了 git 中的示例应用程序,它运行良好。我可以从控制台发送通知。

但是我想在触发某个事件后从服务器发送通知。我采用了与 GCM 中相同的方法,但它不起作用。

05-20 20:40:58.941 30132-30919/com.google.firebase.quickstart.fcm E/AndroidRuntime: FATAL EXCEPTION: pool-1-thread-1
                                                                                    Process: com.google.firebase.quickstart.fcm, PID: 30132
                                                                                    java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.google.firebase.messaging.RemoteMessage$Notification.getBody()' on a null object reference
                                                                                        at com.google.firebase.quickstart.fcm.MyFirebaseMessagingService.onMessageReceived(MyFirebaseMessagingService.java:53)
                                                                                        at com.google.firebase.messaging.FirebaseMessagingService.zzo(Unknown Source)
                                                                                        at com.google.firebase.messaging.FirebaseMessagingService.zzn(Unknown Source)
                                                                                        at com.google.firebase.messaging.FirebaseMessagingService.zzm(Unknown Source)
                                                                                        at com.google.firebase.iid.zzb$2.run(Unknown Source)
                                                                                        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
                                                                                        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
                                                                                        at java.lang.Thread.run(Thread.java:818)
05-20 20:40:59.118 30132-30279/com.google.firebase.quickstart.fcm E/Surface: getSlotFromBufferLocked: unknown buffer: 0xb9e83390

我正在关注这个PHP Script发送通知。 如果我尝试执行脚本,我会得到以下结果。

{"multicast_id":4679427854122301046,"success":1,"failure":0,"canonical_ids":0,"results":[{"message_id":"0:1463757518309261%31bd1c96f9fd7ecd"}]}

注意:我查看了他们的 docs并将代码修改为只有正文和标题。即使那样它也不起作用。

最佳答案

你可以使用这个完整的代码

<?php

function sendFCM($mess,$id) {
$url = 'https://fcm.googleapis.com/fcm/send';
$fields = array (
        'to' => $id,
        'notification' => array (
                "body" => $mess,
                "title" => "Title",
                "icon" => "myicon"
        )
);
$fields = json_encode ( $fields );
$headers = array (
        'Authorization: key=' . "AIzaSyA9vpL9OuX6moOYw-4n3YTSXpoSGQVGnyM",
        'Content-Type: application/json'
);

$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_URL, $url );
curl_setopt ( $ch, CURLOPT_POST, true );
curl_setopt ( $ch, CURLOPT_HTTPHEADER, $headers );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $fields );

$result = curl_exec ( $ch );
curl_close ( $ch );
}

?>

将消息和 token ID 作为参数传递给 sendFCM($mess,$id) 调用。

关于php - 从服务器端向 Android 设备发送 FCM 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37350268/

相关文章:

javascript - 混合代码错误

android - 返回我的 Activity 时如何显示 "close"Webview?

java - 字符串值是如何传递给 updateText() 方法的?

javascript - 从 GAS 发送 GCM 请求时为 "JSON_PARSING_ERROR: Unexpected character (d) at position 0."

android - 是否可以使用 GCM 在不同应用程序之间发送推送通知?

php - 您能否发布有关如何将 PHPUnit 与 NetBeans 结合使用的示例?

php - 特征中的构造函数定义如何冲突?

Php Zip 操作

android - Upi 超链接没有被调用 url

php - 是否可以将消息推送到使用应用程序 ID 注册的所有设备?