Thinkphp5.0整合个推例子
最近做一个后台发送消息推送到app(android和ios)的功能,该功能采用的是个推接口,基于php的,我用TP5来实现这个推送流程。先看官方demo吧。可以先参考官方给到的例子来看。 由于该APP下载量比较大,考虑到要推送给所有下载app的用户,所以这里就不能用针对于单个用户进行推送了,必须针对应用群体进行推送。场景如下: ?文档中给到的php例子是这个:
("Content-Type: text/html; charset=utf-8"(() . '/' . 'IGt.Push.php'('APPKEY','请输入您的APPKEY'('APPID','请输入您的APPID'('MASTERSECRET','请输入您的MASTERSECRET'('HOST','http://sdk.open.api.igexin.com/apiex.htm'('CID','请输入您的CID' = IGeTui(HOST,APPKEY, =
= ->set_isOffline(->set_offlineExpireTime(10 * 60 * 1000);
->set_data(
</span><span style="color: #800080">$appIdList</span>=<span style="color: #0000ff">array</span><span style="color: #000000">(APPID);
</span><span style="color: #800080">$phoneTypeList</span>=<span style="color: #0000ff">array</span>('ANDROID'<span style="color: #000000">);
</span><span style="color: #800080">$provinceList</span>=<span style="color: #0000ff">array</span>('浙江'<span style="color: #000000">);
</span><span style="color: #800080">$tagList</span>=<span style="color: #0000ff">array</span>('haha'<span style="color: #000000">);
</span><span style="color: #800080">$cdt</span> = <span style="color: #0000ff">new</span><span style="color: #000000"> AppConditions();
</span><span style="color: #800080">$cdt</span>->addCondition(AppConditions::PHONE_TYPE,<span style="color: #800080">$phoneTypeList</span><span style="color: #000000">);
</span><span style="color: #800080">$cdt</span>->addCondition(AppConditions::REGION,<span style="color: #800080">$provinceList</span><span style="color: #000000">);
</span><span style="color: #800080">$cdt</span>->addCondition(AppConditions::TAG,<span style="color: #800080">$tagList</span><span style="color: #000000">);
</span><span style="color: #800080">$message</span>->set_appIdList(<span style="color: #800080">$appIdList</span><span style="color: #000000">);
</span><span style="color: #800080">$message</span>->set_conditions(<span style="color: #800080">$cdt</span><span style="color: #000000">);
</span><span style="color: #800080">$rep</span> = <span style="color: #800080">$igt</span>->pushMessageToApp(<span style="color: #800080">$message</span><span style="color: #000000">);
</span><span style="color: #008080">var_dump</span>(<span style="color: #800080">$rep</span><span style="color: #000000">);
</span><span style="color: #0000ff">echo</span> ("<br><br>"<span style="color: #000000">);
} <span style="color: #0000ff">function<span style="color: #000000"> IGtLinkTemplateDemo(){<span style="color: #800080">$template = <span style="color: #0000ff">new<span style="color: #000000"> IGtLinkTemplate(); <span style="color: #800080">$template ->set_appId(APPID);<span style="color: #008000">//<span style="color: #008000">应用appid <span style="color: #800080">$template ->set_appkey(APPKEY);<span style="color: #008000">//<span style="color: #008000">应用appkey <span style="color: #800080">$template ->set_title("请输入通知标题");<span style="color: #008000">//<span style="color: #008000">通知栏标题 <span style="color: #800080">$template ->set_text("请输入通知内容");<span style="color: #008000">//<span style="color: #008000">通知栏内容 <span style="color: #800080">$template ->set_logo("");<span style="color: #008000">//<span style="color: #008000">通知栏logo <span style="color: #800080">$template ->set_isRing(<span style="color: #0000ff">true);<span style="color: #008000">//<span style="color: #008000">是否响铃 <span style="color: #800080">$template ->set_isVibrate(<span style="color: #0000ff">true);<span style="color: #008000">//<span style="color: #008000">是否震动 <span style="color: #800080">$template ->set_isClearable(<span style="color: #0000ff">true);<span style="color: #008000">//<span style="color: #008000">通知栏是否可清除 <span style="color: #800080">$template ->set_url("http://www.getui.com/");<span style="color: #008000">//<span style="color: #008000">打开连接地址 //$template->set_notifyStyle(0); //$template->set_duration(BEGINTIME,ENDTIME); //设置ANDROID客户端在此时间区间内展示消息 //iOS推送需要设置的pushInfo字段 // $apn = new IGtAPNPayload(); // $apn->alertMsg = "alertMsg"; // $apn->badge = 11; // $apn->actionLocKey = "启动"; // // $apn->category = "ACTIONABLE"; // // $apn->contentAvailable = 1; // $apn->locKey = "请输入通知栏内容"; // $apn->title = "请输入通知栏标题"; // $apn->titleLocArgs = array("titleLocArgs"); // $apn->titleLocKey = "请输入通知栏标题"; // $apn->body = "body"; // $apn->customMsg = array("payload"=>"payload"); // $apn->launchImage = "launchImage"; // $apn->locArgs = array("locArgs"); // // $apn->sound=("test1.wav");; // $template->set_apnInfo($apn); <span style="color: #0000ff">return <span style="color: #800080">$template<span style="color: #000000">; } ?> 然后下载sdk,下载地址: 然后看我自己实现流程: 当我在后台对某一条消息进行推送的时候 利用ajax传过来消息标题和内容,在控制器中用一个方法去接收:
-> (->token == 2 '' = Request::instance()->param('list_id' = Request::instance()->param('list_title' = ='type' => 'list','value' => ,'title' => '消息标题','content' => ,//消息内容 = ->pushMessageToApp(
</span><span style="color: #0000ff">if</span> (<span style="color: #800080">$res</span>['result'] == 'ok'<span style="color: #000000">) {
</span><span style="color: #0000ff">return</span> ['code' => '1','msg' => '推送成功!'<span style="color: #000000">];
} </span><span style="color: #0000ff">else</span><span style="color: #000000"> {
</span><span style="color: #0000ff">return</span> ['code' => '0','msg' => '推送失败!'<span style="color: #000000">];
}
}</span></pre>
看一下这个geTui类存放位置以及代码: 我把下载的sdk放在extend文件夹下了。 然后重新创建了一个名为geTui的php文件 <span style="color: #0000ff">class<span style="color: #000000"> GeTui
{ <span style="color: #0000ff">private <span style="color: #800080">$host = 'http://sdk.open.api.igexin.com/apiex.htm'<span style="color: #000000">;
<span style="color: #008000">//<span style="color: #008000">所有推送接口均支持四个消息模板,依次为通知弹框下载模板,通知链接模板,通知透传模板,透传模板
<span style="color: #008000">//<span style="color: #008000"> IOS8.2 支持
// $template = new IGtAPNTemplate();
} 好了,如果前端(android和ios)都以及做好接收处理的话,应该是没问题的了,该案例应用场景于所以下载app的客户,包含注册和未注册的,如果是针对于所有以及注册的用户进行推送的话 建议使用对单个用户进行推送消息。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |