友盟是中国最大的移动开发者服务平台,为移动开发者提供免费的应用统计分析、社交分享、消息推送、自动更新、在线参数、移动推广效果分析、微社区等app开发和运营解决方案。
本博文讲述如何快速在ThinkPHP框架中集成友盟推送功能:
1、在官网或是在本博文内下载友盟推送PHP_DEMO;
2、将文件夹下的Notification文件夹放入到Application(应用文件目录)下;
3、在每个php文件内为文件根据文件夹的命名添加上合适的命名空间,笔者加的是:
-
//命名空间
-
namespace Notification;
4、在类文件Sms.class.php中将本人可以用到的函数进行重写完善,笔者就此稍举例子:
-
<?php
-
namespace Notification;
-
//引入核心文件
-
require_once('AndroidBroadcast.php');
-
require_once('AndroidFilecast.php');
-
require_once('AndroidGroupcast.php');
-
require_once('AndroidUnicast.php');
-
require_once('AndroidCustomizedcast.php');
-
require_once('IOSBroadcast.php');
-
require_once('IOSFilecast.php');
-
require_once('IOSGroupcast.php');
-
require_once('IOSUnicast.php');
-
require_once('IOSCustomizedcast.php');
-
class Sms {
-
protected $appkey = NULL;
-
protected $appMasterSecret = NULL;
-
protected $timestamp = NULL;
-
protected $validation_token = NULL;
-
function __construct($key, $secret) {
-
$this->appkey = $key;
-
$this->appMasterSecret = $secret;
-
$this->timestamp = strval(time());
-
}
-
/**
-
* Android推送—广播
-
* @param $title string 推送消息标题
-
* @param $content string 推送消息内容
-
* @return mixed
-
*/
-
function sendAndroidBroadcast($title,$content) {
-
try {
-
$brocast = new AndroidBroadcast();
-
$brocast->setAppMasterSecret($this->appMasterSecret);
-
$brocast->setPredefinedKeyValue("appkey", $this->appkey);
-
$brocast->setPredefinedKeyValue("timestamp", $this->timestamp);
-
$brocast->setPredefinedKeyValue("ticker", "Android broadcast ticker");
-
$brocast->setPredefinedKeyValue("title", $title);
-
$brocast->setPredefinedKeyValue("text", $content);
-
$brocast->setPredefinedKeyValue("after_open", "go_app");
-
$brocast->setPredefinedKeyValue("production_mode", "true");
-
$brocast->setExtraField("test", "helloworld");
-
print("Sending broadcast notification, please wait...\r\n");
-
return $brocast->send();
-
print("Sent SUCCESS\r\n");
-
} catch (Exception $e) {
-
print("Caught exception: " . $e->getMessage());
-
}
-
}
-
/**
-
* Android推送—单播
-
* @param $title string 推送消息标题
-
* @param $content string 推送消息内容
-
* @param $tokens array 设备的token值
-
* @return mixed
-
*/
-
function sendAndroidUnicast($title,$content,$tokens) {
-
try {
-
$unicast = new AndroidUnicast();
-
$unicast->setAppMasterSecret($this->appMasterSecret);
-
$unicast->setPredefinedKeyValue("appkey", $this->appkey);
-
$unicast->setPredefinedKeyValue("timestamp", $this->timestamp);
-
$unicast->setPredefinedKeyValue("device_tokens", $tokens);
-
$unicast->setPredefinedKeyValue("ticker", "Android unicast ticker");
-
$unicast->setPredefinedKeyValue("title", $title);
-
$unicast->setPredefinedKeyValue("text", $content);
-
$unicast->setPredefinedKeyValue("after_open", "go_app");
-
$unicast->setPredefinedKeyValue("production_mode", "true");
-
$unicast->setExtraField("test", "helloworld");
-
print("Sending unicast notification, please wait...\r\n");
-
return $unicast->send();
-
print("Sent SUCCESS\r\n");
-
} catch (Exception $e) {
-
print("Caught exception: " . $e->getMessage());
-
}
-
}<pre name="code" class="php">
-
<span style="white-space:pre"> </span>/**
-
* IOS推送—广播
-
* @param $title string 推送消息标题
-
* @param $content string 推送消息内容
-
* @return mixed
-
*/
-
function sendIOSBroadcast($title,$content) {
-
try {
-
$brocast = new IOSBroadcast();
-
$brocast->setAppMasterSecret($this->appMasterSecret);
-
$brocast->setPredefinedKeyValue("appkey", $this->appkey);
-
$brocast->setPredefinedKeyValue("timestamp", $this->timestamp);
-
$brocast->setPredefinedKeyValue("alert", $title);
-
$brocast->setPredefinedKeyValue("badge", 0);
-
$brocast->setPredefinedKeyValue("sound", "chime");
-
$brocast->setPredefinedKeyValue("production_mode", "false");
-
$brocast->setCustomizedField("test", $content);
-
print("Sending broadcast notification, please wait...\r\n");
-
return $brocast->send();
-
print("Sent SUCCESS\r\n");
-
} catch (Exception $e) {
-
print("Caught exception: " . $e->getMessage());
-
}
-
}
-
/**
-
* IOS推送—单播
-
* @param $title string 推送消息标题
-
* @param $content string 推送消息内容
-
* @param $tokens array 设备的token值
-
* @return mixed
-
*/
-
function sendIOSUnicast($title,$content,$tokens) {
-
try {
-
$unicast = new IOSUnicast();
-
$unicast->setAppMasterSecret($this->appMasterSecret);
-
$unicast->setPredefinedKeyValue("appkey", $this->appkey);
-
$unicast->setPredefinedKeyValue("timestamp", $this->timestamp);
-
$unicast->setPredefinedKeyValue("device_tokens", $tokens);
-
$unicast->setPredefinedKeyValue("alert", $title);
-
$unicast->setPredefinedKeyValue("badge", 0);
-
$unicast->setPredefinedKeyValue("sound", "chime");
-
$unicast->setPredefinedKeyValue("production_mode", "false");
-
$unicast->setCustomizedField("test", $content);
-
print("Sending unicast notification, please wait...\r\n");
-
return $unicast->send();
-
print("Sent SUCCESS\r\n");
-
} catch (Exception $e) {
-
print("Caught exception: " . $e->getMessage());
-
}
-
}<pre name="code" class="php">
-
}
5、在自己的系统中进行调用:
-
$sms = new \Sms("5790414467e58ebc2f0008ae", "dgbtvr7myr3flllbpc6bww4gkfwjpnmv");
-
$sms->sendAndroidBroadcast("这是标题","这是内容");
-
$sms->sendAndroidUnicast("这是标题","这是内容",$tokens);
-
$sms->sendIOSBroadcast("这是标题","这是内容");
-
$sms->sendIOSUnicast("这是标题","这是内容",$tokens);
转载地址:https://blog.csdn.net/Zhihua_W/article/details/52250021?locationNum=12