我正在开发的应用程序可以通过Google Cloud Messaging接收通知。 但现在我想知道是否可以从PHP代码发送变量,并在后台处理它们来执行函数?
我还想知道,一旦用户点击了通知,我是否可以使用通知发送的变量做一些事情。
我一直在寻找一个例子,但我找不到Google Cloud Messaging。 也许我没有使用正确的关键字/标签来找到它。
我很遗憾在这里提出这样的问题,它可能就像找到正确的东西一样简单,所以找到一个代码/项目的例子。
答案 0 :(得分:1)
androidhive教程使用处理GCM的弃用方法,其GCMIntentService是 com.google.android.gcm.GCMBaseIntentService 包的一部分。处理GCM的新方法使用PlayServices API,其GCMIntentService是 com.google.android.gms.gcm.GoogleCloudMessaging 包的一部分。
然而 ,无论客户端使用哪种方法,您最终都会检查额外内容的意图以提取消息的元素(在onMessage()中为旧的方式和onHandleIntent()为更新的方法)。 PHP服务器端保持不变。
如果您使用
在这个小例子上传递消息someurl / example.php?message =这是一条消息
<?php session_start();
require 'vals.php';
$randomNum=rand(10,100);
$registrationIDs[] = $regidOne;
$message = $_GET['message'];
$morestuff = 'More text for you';
$url = 'https://android.googleapis.com/gcm/send';
$fields = array(
'registration_ids' => $registrationIDs,
'data' => array( "message" => $message,
"moredata" => $morestuff),
'delay_while_idle'=> false,
'time_to_live' => 86400,
'collapse_key'=>"".$randomNum.""
);
$headers = array(
'Authorization: key=' . $apiKey,
'Content-Type: application/json'
);
// Open connection
$ch = curl_init();
// Set the url, number of POST vars, POST data
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_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode( $fields ));
// Execute post
$result = curl_exec($ch);
// Close connection
curl_close($ch);
echo "Your message has been sent, the results from the Cloud Server were :\n$
echo "<p>";
echo $result;
?>
然后你会在客户端选择消息:
if (intent.hasExtra("message")) {
String theMessage = intent.getStringExtra("message");
//do something
}
并使用以下方式处理您所需的额外数据:
if (intent.hasExtra("moredata")) {
String moreData = intent.getStringExtra("moredata");
//do something else
}
通常,“做某事”可以是开始一项活动。