个推-php ios 离线通知例子


ios 只能用透传模板在apns参数
透传消息,即自定义消息,消息体格式客户可以自己定义,如纯文本、json串等。透传消息个推只传递数据,不做任何处理,客户端接收到透传消息后需要自己去做后续动作处理,如通知栏展示、弹框等。
Ios:
推送请求发起,根据指定的cid,在我们服务器上会去判断这个cid是否在线:
1、 如果cid在线,那将直接走个推在线通道,后端推送的TransmissionContent的值将会通过cid去识别传递到对应的手机上,并进入sdk的[GeTuiSdkDelegate GeTuiSdkDidReceivePayloadData]里;在这一块数据传递中TransmissionContent里的内容,个推只负责传递,不会更改,因此这部分展示需要客户端自己处理;
2、 如果cid离线,这时通过cid绑定的苹果的devicetoken,个推会将后端apnpayload里带的标题内容等参数,通过请求苹果自身的apns服务器通过devicetoken去下发到对应的手机上,这部分是直接离线展示在苹果手机上的;如果客户看了消息后,打开了APP,这时cid是恢复在线了,第一步中的流程会走一遍,因此ios前端需要通过[GeTuiSdkDelegate GeTuiSdkDidReceivePayloadData]里的offLine去判断是否要继续展示透传内容,OffLine为true就说明展示过离线apns通知,透传消息处理成不展示;
注意:在2中,因为走的苹果apns通道,因此如果个推平台上上传的ios推送证书环境和bundleid与实际客户端上app的证书环境和bundleid不一致的话,苹果将不下发apns通知,因为无法验证通过;

 1 <?php
 2 //ÏûÏ¢ÍÆËÍDemo
 3 header("Content-Type: text/html; charset=utf-8");
 4 require_once(dirname(__FILE__) . '/' . 'IGt.Push.php');
 5 
 6 //²ÉÓÃ"PHP SDK ¿ìËÙÈëÃÅ"£¬ "µÚ¶þ²½ »ñÈ¡·ÃÎÊƾ֤ "ÖлñµÃµÄÓ¦ÓÃÅäÖÃ
 7 define('APPKEY','');
 8 define('APPID','');
 9 define('MASTERSECRET','');
10 define('HOST','http://sdk.open.api.igexin.com/apiex.htm');
11 define('CID','ÇëÊäÈëÄúµÄCID');
12 //±ðÃûÍÆËÍ·½Ê½
13 //define('Alias','ÇëÊäÈëÄúµÄAlias');
14 
15 pushMessageToSingle();
16 
17 //µ¥Íƽӿڰ¸Àý
18 function pushMessageToSingle(){
19     $igt = new IGeTui(HOST,APPKEY,MASTERSECRET);
20 
21     //ÏûϢģ°æ£º
22     $template = IGtTransmissionTemplateDemo();
23 
24 
25     //¶¨Òå"SingleMessage"
26     $message = new IGtSingleMessage();
27 
28     $message->set_isOffline(true);//ÊÇ·ñÀëÏß
29     $message->set_offlineExpireTime(3600*12*1000);//ÀëÏßʱ¼ä
30     $message->set_data($template);//ÉèÖÃÍÆËÍÏûÏ¢ÀàÐÍ
31     //$message->set_PushNetWorkType(0);//ÉèÖÃÊÇ·ñ¸ù¾ÝWIFIÍÆËÍÏûÏ¢£¬2Ϊ4G/3G/2G£¬1ΪwifiÍÆËÍ£¬0Ϊ²»ÏÞÖÆÍÆËÍ
32     //½ÓÊÕ·½
33     $target = new IGtTarget();
34     $target->set_appId(APPID);
35     $target->set_clientId(CID);
36 //    $target->set_alias(Alias);
37 
38     try {
39         $rep = $igt->pushMessageToSingle($message, $target);
40         var_dump($rep);
41         echo ("<br><br>");
42 
43     }catch(RequestException $e){
44         $requstId =e.getRequestId();
45         //ʧ°ÜʱÖØ·¢
46         $rep = $igt->pushMessageToSingle($message, $target,$requstId);
47         var_dump($rep);
48         echo ("<br><br>");
49     }
50 }
51 
52 function IGtTransmissionTemplateDemo(){
53     $template =  new IGtTransmissionTemplate();
54     $template->set_appId(APPID);//Ó¦ÓÃappid
55     $template->set_appkey(APPKEY);//Ó¦ÓÃappkey
56     $template->set_transmissionType(2);//͸´«ÏûÏ¢ÀàÐÍ
57     $template->set_transmissionContent("ÔÚÏß»ñÈ¡µÄ͸´«ÄÚÈÝ");//͸´«ÄÚÈÝ
58     //$template->set_duration(BEGINTIME,ENDTIME); //ÉèÖÃANDROID¿Í»§¶ËÔÚ´Ëʱ¼äÇø¼äÄÚչʾÏûÏ¢
59     //APN¼òµ¥ÍÆËÍ
60    $apn = new IGtAPNPayload();
61     $alertmsg=new DictionaryAlertMsg();
62     $alertmsg->body="apnsÄÚÈÝ";
63     $alertmsg->title="apns±êÌâ";
64    $apn->alertMsg=$alertmsg;
65     $apn->badge=1;
66     $apn->sound="";
67    $apn->contentAvailable=0;
68     $template->set_apnInfo($apn);
69     $message = new IGtSingleMessage();
70     
71 
72     return $template;
73 }
原文地址:https://www.cnblogs.com/peipeiyu/p/12132812.html