美文网首页程序猿
那些年远程推送给我留下的坑

那些年远程推送给我留下的坑

作者: 天空DE背面是阳光 | 来源:发表于2016-07-15 11:37 被阅读295次

    今天终于有时间,好好整理远程推送的那些坑了。以下就是,我在做推送(极光推送为例)遇到的几个坑,希望大家能安利一下。(这是最近工作一个简单的总结,很想在后期找个一大把空闲的午后,好好反省下自己,都做了什么见不得人的事)

    1坑:

    - (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo

    fetchCompletionHandler:(void(^)(UIBackgroundFetchResult))completionHandler(7.0后引进的方法,拥有多任务属性)会覆盖- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo (没有多任务特点)

    *备注:两个方法不要同时用,两个同时存在,优先调用前者(前后台点击通知,会调用者两方法中一个)

    2坑:

    因为 RegistrationID 是 JPush SDK 注册完成之后才得到的,所以调用 SDK API 来获取 RegistrationID 的值时需要稍注意,不是总能够立即得到。(这有可能导致你推送出错)

    建议:在监听到 kJPFNetworkDidLoginNotification 这个通知后的代码里,来获取 RegistrationID 的值。

    3坑:

    aps =     {

    alert = haunting;

    badge = 1;

    "content-available" = 1;

    sound = default;

    };

    **注:除了alert可以为空,其他为空或者("content-available" = 0)会导致

    - (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo fetchCompletionHandler:(void(^)(UIBackgroundFetchResult))completionHandler(7.0后引进的方法,拥有多任务属性)该方法不走(楼主亲试)

    第四个不算是坑:算是个友情提示:

    //接收远程通知(iOS7.0后,允许在后台时刷新数据)

    - (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo

    fetchCompletionHandler:(void(^)(UIBackgroundFetchResult))completionHandler {

    NSLog(@"=======收到推送%@========",userInfo);

    NSDictionary*APNSDic = [NSDictionarydictionary];

    APNSDic = userInfo[@"aps"];

    if(application

    .applicationState==UIApplicationStateActive){

    。。。。。。。。。。。

    }

    elseif(application

    .applicationState==UIApplicationStateBackground){

    if(userInfo) {

    。。。。。。。。。。。。

    }

    }

    //在此方法中一定要调用completionHandler这个回调,告诉系统是否处理成功

    //    UIBackgroundFetchResultNewData, //成功接收到数据

    //    UIBackgroundFetchResultNoData,  //没有接收到数据

    //    UIBackgroundFetchResultFailed   //接受失败

    [JPUSHServicehandleRemoteNotification:userInfo];

    if(userInfo) {

    completionHandler(UIBackgroundFetchResultNewData);

    }else{

    completionHandler(UIBackgroundFetchResultNoData);

    }

    }

    以上就是那些年我踩过的坑,望各位珍重!

    当然只是开个玩笑,楼主希望与各位互相学习,共同进步!

    相关文章

      网友评论

        本文标题:那些年远程推送给我留下的坑

        本文链接:https://www.haomeiwen.com/subject/ywedkttx.html