我先从谷歌新推出的通知服务Firebase Cloud Messaging
开始。
多亏了这段代码https://github.com/firebase/quickstart-android/tree/master/messaging,我才能从我的Firebase用户控制台向我的安卓设备发送通知。
有没有什么API或方法可以在不使用Firebase控制台的情况下发送通知?我的意思是,例如,一个PHP API或类似的东西,直接从我自己的服务器创建通知。
发布于 2016-05-23 00:26:44
Firebase Cloud Messaging有一个服务器端API,您可以调用它来发送消息。参见https://firebase.google.com/docs/cloud-messaging/server。
发送消息可以像使用curl
调用HTTP端点一样简单。请参阅https://firebase.google.com/docs/cloud-messaging/server#implementing-http-connection-server-protocol
curl -X POST --header "Authorization: key=<API_ACCESS_KEY>" \
--Header "Content-Type: application/json" \
https://fcm.googleapis.com/fcm/send \
-d "{\"to\":\"<YOUR_DEVICE_ID_TOKEN>\",\"notification\":{\"title\":\"Hello\",\"body\":\"Yellow\"}}"
发布于 2016-08-21 04:28:30
这在使用CURL时有效
function sendGCM($message, $id) {
$url = 'https://fcm.googleapis.com/fcm/send';
$fields = array (
'registration_ids' => array (
$id
),
'data' => array (
"message" => $message
)
);
$fields = json_encode ( $fields );
$headers = array (
'Authorization: key=' . "YOUR_KEY_HERE",
'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 );
echo $result;
curl_close ( $ch );
}
?>
$message
是您要发送到设备的消息
$id
是设备注册令牌
YOUR_KEY_HERE
是您的服务器应用编程接口密钥(或传统服务器应用编程接口密钥)
发布于 2016-06-03 02:08:23
使用服务api。
网址:https://fcm.googleapis.com/fcm/send
方法类型:POST
标头:
Content-Type: application/json
Authorization: key=your api key
正文/有效负载:
{ "notification": {
"title": "Your Title",
"text": "Your Text",
"click_action": "OPEN_ACTIVITY_1" // should match to your intent filter
},
"data": {
"keyname": "any value " //you can get this data as extras in your activity and this data is optional
},
"to" : "to_id(firebase refreshedToken)"
}
在你的应用中,你可以在你要调用的activity中添加下面的代码:
<intent-filter>
<action android:name="OPEN_ACTIVITY_1" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
也可以在Firebase onMessageReceived not called when app in background上查看答案
https://stackoverflow.com/questions/37371990
复制相似问题