个推-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 }