首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

iOS 普通推送和静默推送(1)

iOS 普通推送和静默推送(1)

普通推送:当APP离线时,当有推送下达的时候,走的是APNs,所以手机会有铃声、手机顶部出现横幅/通知栏会收到通知。

    APP离线时,相关方法什么时候执行,看下面1-4就知道了:
    1.只有点开通知栏中的通知进入APP/点开横幅中的通知进入APP,才会执行方法AAA;不点击不执行。
    2.点击应用图标进入APP,一定不会执行方法AAA。
    3.APP离线收到推送,点击应用图标进入APP/点开通知栏中的通知/点开横幅中的通知进入APP,会执行个推提供的 方法BBB的离线的透传消息
    4.APP在线收到推送,就不走APNs,会直接执行个推提供的 方法BBB的在线的透传消息

    总结:综合1-4,只要点开APNs发来的通知,那么先执行方法AAA,再执行个推的方法BBB

方法AAA

    iOS 10之前,点通知,会调用如下方法。
    - (void)applicationUIApplication *)application didReceiveRemoteNotificationNSDictionary *)userInfo fetchCompletionHandlervoid (^)(UIBackgroundFetchResult))completionHandler{
         ...   
      做你想做的操作。例如更新UI,跳转界面,文字转语音并读出来,顶部弹框,操作userInfo中的内容。
         ...
    }
     
     
    iOS 10 及以后版本,点击通知,会调用如下方法
    -(void)userNotificationCenterUNUserNotificationCenter *)center didReceiveNotificationResponseUNNotificationResponse *)response withCompletionHandlervoid (^)(void))completionHandler{
        
          ...
         做你想做的操作。例如更新UI,跳转界面,文字转语音并读出来,顶部弹框,操作userInfo中的内容。
          ...
     
        NSLog(@"didReceiveNotification:%@", response.notification.request.content.userInfo);
        // [ GTSdk ]:将收到的APNs信息传给个推统计
        [GeTuiSdk handleRemoteNotification:response.notification.request.content.userInfo];
        completionHandler();
        
    }

方法BBB

    离线的透传消息:程序离线收到推送时候,当由离线进入在线的时候会执行(offLine为YES)。离线的时候不会执行该方法。
    在线的透传消息:程序在线收到推送的时候会执行(offLine为NO)。

    接收个推推送的透传消息,就会执行如下代理方法
    - (void)GeTuiSdkDidReceivePayloadDataNSData *)payloadData andTaskIdNSString *)taskId andMsgIdNSString *)msgId andOffLineBOOL)offLine fromGtAppId:(NSString *)appId {
     
       拿到payloadData并转成字符串,然后做你想做的操作 :更新UI,跳转界面,文字转语音并读出来,顶部弹框
     
       if (!offLine) {// offLine为NO表示在线的透传消息。
           
        }else{// offLine为YES表示离线的透传消息。
        
       }
    }
返回列表