GCM传递变量并做一些事情

时间:2014-03-12 09:55:41

标签: php android google-cloud-messaging

我正在开发的应用程序可以通过Google Cloud Messaging接收通知。 但现在我想知道是否可以从PHP代码发送变量,并在后台处理它们来执行函数?

我还想知道,一旦用户点击了通知,我是否可以使用通知发送的变量做一些事情。

我一直在寻找一个例子,但我找不到Google Cloud Messaging。 也许我没有使用正确的关键字/标签来找到它。

我很遗憾在这里提出这样的问题,它可能就像找到正确的东西一样简单,所以找到一个代码/项目的例子。

1 个答案:

答案 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
}

通常,“做某事”可以是开始一项活动。