zoukankan      html  css  js  c++  java
  • 个推-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 }
  • 相关阅读:
    最近的3个困惑:信守承诺、技术产品先行还是市场销售先行、客户从哪来
    最近的3个困惑:信守承诺、技术产品先行还是市场销售先行、客户从哪来
    详细回复某个CSDN网友,对我的文章和技术实力以及CSDN的吐槽
    详细回复某个CSDN网友,对我的文章和技术实力以及CSDN的吐槽
    2015年工作中遇到的问题:21-30(这10个问题很有价值)
    使用ABAP(ADBC)和Java(JDBC)连接SAP HANA数据库
    C4C和Outlook的集成
    Hybris开发环境的license计算实现
    CRM WebClient UI和Hybris里工作中心跳转的url生成逻辑
    CRM WebUI and Hybris的Product页面标题实现
  • 原文地址:https://www.cnblogs.com/peipeiyu/p/12132812.html
Copyright © 2011-2022 走看看