欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

php实现 GCM(Google Cloud Messaging) 云推送消息

程序员文章站 2022-05-27 13:19:41
...

首先我们要获取api key ,使用google 帐号登录https://code.google.com/apis/console 点击api access 如下 在该页面可以看到申请到的app key 如果没有可以点击 create new server key... 按钮 如下图 获得了app key 下面就简单了 上php代码: ?phpclass push

首先我们要获取api key ,使用google 帐号登录https://code.google.com/apis/console 点击api access 如下

php实现 GCM(Google Cloud Messaging) 云推送消息

在该页面可以看到申请到的app key 如果没有可以点击 create new server key... 按钮 如下图

php实现 GCM(Google Cloud Messaging) 云推送消息

获得了app key 下面就简单了 上php代码:

load->Model ( 'common' );
		// $this->common->requireLogin ();
	}
	
	function index() {
		
	$reg_id = "APA91bGLGb2AiMM-gLMRKNKqlrsKRJHFjQ1_1XFkmlITjd8X7ucV9WFFAOmkICkMn7hyMqIevkET-XrprY32LtiAuZtzreYYow4aiZCpH_Q04dfOiC85e-bH7NRIMsF0W3BvJ_ki8PE5";
	$msg = "00000";
 
	$this->send_gcm_notify($reg_id, $msg);
	}
	
	function send_gcm_notify($reg_id, $message) {
 
    $fields = array(
        'registration_ids'  => array( $reg_id),
        'data'              => array( "message" => $message ),
    );
 
    $headers = array(
        'Authorization: key=' . 'AIzaSyBV4VW7n9AJdJwox9MUwC******',//获取到的app key
        'Content-Type: application/json'
    );
 
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'https://android.googleapis.com/gcm/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);
    echo $result;
 }
}

?>

关于代码中的$reg_id:是app中调用gcm.jar中的方法获取到的,如下。在该测试代码中我们在服务端写死该ID.
import com.google.android.gcm.GCMRegistrar;

 final String regId = GCMRegistrar.getRegistrationId(this);

整个推送系统的交互应该是:

1.客户端app运行,成功获取 regId ,将该ID发送到服务端,存入数据库。

2.服务端根据某些特定的条件选择出regId,而后调用google 推送服务。


推送成功返回如下:

{
   multicast_id: 5381354139383071000,
   success: 1,
   failure: 0,
   canonical_ids: 0,
   results: [
    {
      message_id: "0:1377835083519762%2adac3a0f9fd7ecd"
    }
   ]
}