Laravel 调用 个推 对Android和IOS进行推送
2017-09-26 17:54
393 查看
<?php //个推 header("Content-Type: text/html; charset=utf-8"); //引用的个推的文件 require_once(public_path() . '/Admin/getui/IGt.Push.php'); require_once(public_path() . '/Admin/getui/igetui/IGt.AppMessage.php'); require_once(public_path() . '/Admin/getui/igetui/IGt.APNPayload.php'); require_once(public_path() . '/Admin/getui/igetui/template/IGt.BaseTemplate.php'); require_once(public_path() . '/Admin/getui/IGt.Batch.php'); require_once(public_path() . '/Admin/getui/igetui/template/IGt.NotificationTemplate.php'); require_once(public_path() . '/Admin/getui/igetui/utils/AppConditions.php'); require_once(public_path() . '/Admin/getui/protobuf/type/pb_string.php'); //http的域名 define('HOST',env('APP_GTHOST')); define('APPKEY',env('APP_GTKEY'));//个推的key define('APPID',env('APP_GTID'));//个推的appid define('MASTERSECRET',env('APP_GTMASTERSECRET'));//个推的密钥 class SendMessageController extends Controller { //发送消息 public function send($id){ $res = $this -> pushMessageToList($content->title,$content->content,$person);//这个主要用了别名推送,一个别名可以绑定十个cid.cid代表的是设备id } //群推没有限制,这个方式主要是直接把推送任务直接给了个推这边,不分别用户的类型 public function pushMessageToApp($title,$content){ $igt = new \IGeTui(HOST,APPKEY,MASTERSECRET); $template = $this -> IGtTransmissionTemplateDemo($title,$content); //个推信息体 //基于应用消息体 $message = new \IGtAppMessage(); $message->set_isOffline(true); $message->set_offlineExpireTime(10 * 60 * 1000);//离线时间单位为毫秒,例,两个小时离线为3600*1000*2 $message->set_data($template); $appIdList=array(APPID); $message->set_appIdList($appIdList); $rep = $igt->pushMessageToApp($message,"任务组名"); } //群推 有人员限制 这个主要利用了 别名推送 (利用用户uid当作了推送的别名)..获取不同类型的用户,将uid(别名)统一传过去 function pushMessageToList($title,$content,$obj){ putenv("gexin_pushList_needDetails=true"); $igt = new \IGeTui(HOST,APPKEY,MASTERSECRET); $template = $this -> IGtTransmissionTemplateDemo($title,$content); //定义"ListMessage"信息体 // $message = new \IGtListMessage(); $message = new \IGtSingleMessage(); $message->set_isOffline(true);//是否离线 $message->set_offlineExpireTime(3600*12*1000);//离线时间 $message->set_data($template);//设置推送消息类型 $message->set_PushNetWorkType(0);//设置是否根据WIFI推送消息,1为wifi推送,0为不限制推送 // $contentId = $igt->getContentId($message); foreach($obj as $k => $v){ $target = new \IGtTarget(); $target->set_appId(APPID); $target->set_alias($v->id); try { $rep = $igt->pushMessageToSingle($message, $target);//利用的是单推 效率高 }catch(\RequestException $e){ $requstId =e.getRequestId(); //失败时重发 $rep = $igt->pushMessageToSingle($message, $target,$requstId); } } } //试试这个 //这个主要是透传消息模板 function IGtTransmissionTemplateDemo($title,$content){ $template = new \IGtTransmissionTemplate(); $template->set_appId(APPID);//应用appid $template->set_appkey(APPKEY);//应用appkey $template->set_transmissionType(1);//透传消息类型 $template->set_transmissionContent($content);//透传内容 //APN高级推送 $apn = new \IGtAPNPayload(); $alertmsg=new \DictionaryAlertMsg(); $alertmsg->body=$content; $alertmsg->actionLocKey="ActionLockey"; $alertmsg->locKey=$title; $alertmsg->locArgs=array("locargs"); $alertmsg->launchImage="launchimage"; // IOS8.2 支持 $alertmsg->title=$title; $alertmsg->titleLocKey=$content; $alertmsg->titleLocArgs=array("TitleLocArg"); $apn->alertMsg=$alertmsg; $apn->badge=1; $apn->sound=""; $apn->add_customMsg("payload","payload"); $apn->contentAvailable=1; $apn->category="ACTIONABLE"; $template->set_apnInfo($apn); return $template; } } ?>
相关文章推荐
- JS调用Android、Ios原生控件
- JS调用Android、Ios原生控件
- 在webView 中使用JS 调用 Android / IOS的函数 Function
- iOS开发之swift与OC混编出现的坑,oc中不能对swift的代理进行调用,不能访问swift中的代理,swift中的回调方法
- iOS- iOS 和 Android 的后台推送原理各是什么?有什么区别?
- 求教,是否直接可以调用android的libmedia.so库进行音频播放
- Android之使用个推实现三方应用的推送功能
- Android和IOS js和原生调用的注入的js代码
- iOS 调用支付宝进行支付功能
- react native极光推送android和ios证书申请
- Android 调用已安装市场,进行软件评分的功能实现
- 游戏内调用系统邮件,编辑邮件(android + ios)
- 调用Android短信软件进行短信群发
- IOS开发使用极光平台进行远程推送
- 网页调用 iOS/Android 客户端
- android、ios当前主流推送平台(消息推送)功能、性能对比技术研发文档
- 手机视频会议,手机视频教学,Android视频模块集成,IOS视频模块调用,快速集成
- Android IOS WebRTC 音视频开发总结(二六)-- webrtc调用堆栈
- IOS 测试机进行推送
- iOS中Objective-C与JavaScript之间相互调用的实现(实现了与Android相同的机制)