zoukankan      html  css  js  c++  java
  • iOS极光推送进一部使用(重点)

    一.设置标签alias(userId 单个推送)和别名tags(行业分类 多个推送) 
     
    覆盖逻辑 而不是新增逻辑 block回调
    + (void)      setTags:(NSSet *)tags
                    alias:(NSString *)alias
    fetchCompletionHandle:(void (^)(int iResCode, NSSet *iTags, NSString *iAlias))completionHandler;
     
     
    三. 应用程序进入前台各种情况的判断
    1.应用程序关闭
       NSDictionary* remoteNotification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
        if (remoteNotification ==nil) {
            //1.点击icon进入应用
        }else{
            //2.点击消息进入应用
            int badge =[remoteNotification[@"aps"][@"badge"] intValue];
            badge--;
            [APService setBadge:badge];
            [UIApplication sharedApplication].applicationIconBadgeNumber =badge;
            self.pushType = [remoteNotification objectForKey:@"msg_type"];
            self.pushID = [remoteNotification objectForKey:@"msg_id"];
            //根据推送消息的 类型 和 参数 推不同的控制器
            if ([self.pushType isEqualToString:@"news"]) {
            }else if([self.pushType isEqualToString:@"rsp-sl"]){ 
            }else if([self.pushType isEqualToString:@"rsp-sl-1"]){
            }
        }
    2.应用程序在活跃状态 
    //收到通知
    - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^) (UIBackgroundFetchResult))completionHandler {
        [JPUSHService handleRemoteNotification:userInfo];
        completionHandler(UIBackgroundFetchResultNewData);
       
        // 取得 APNs 标准信息内容
        //NSDictionary *aps = [userInfo valueForKey:@"aps"];
        //NSString *content = [aps valueForKey:@"alert"]; //推送显示的内容
        //NSInteger badge = [[aps valueForKey:@"badge"] integerValue]; //badge数量
        //NSString *sound = [aps valueForKey:@"sound"]; //播放的声音
        //取得Extras字段内容
        //NSString *customizeField1 = [userInfo valueForKey:@"customizeExtras"]; //服务端中Extras字段,key是自己定义的
        //NSLog(@"content =[%@], badge=[%lu], sound=[%@], customize field  =[%@]",content,badge,sound,customizeField1);
     
         int badge =[userInfo[@"aps"][@"badge"] intValue];
             badge--;
             [APService setBadge:badge];
             [UIApplication sharedApplication].applicationIconBadgeNumber =badge;
             self.pushType = [userInfo objectForKey:@"msg_type"];
             self.pushID = [userInfo objectForKey:@"msg_id"];
             //iOS的应用程序分为3种状态,1是前台运行的状态UIApplicationStateActive;
              2是后台运行的状态UIApplicationStateInactive;
              3是app关闭状态UIApplicationStateBackground     
                        现在只有第三种状态app关闭的情况下会自动统计角标数目;其它两种情况下都需要手动操作来实现角标的统计,这块的实现机制就是这样的。
       
             //1.应用程序处在前台
             if (application.applicationState == UIApplicationStateActive) {
                 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"收到推送消息"
                                                                 message:userInfo[@"aps"][@"alert"]
                                                                delegate:self
                                                       cancelButtonTitle:@"取消"
                                                       otherButtonTitles:@"确定", nil,nil];
                 alert.tag=4020;
                 //点确定跳到相应的界面。
                 [alert show];
             }2.应用程序在后台
             else if(application.applicationState ==UIApplicationStateInactive){
                
                  //根据推送消息的 类型 和 参数 推不同的控制器
                 if ([self.pushType isEqualToString:@"news"]) {
                 }else if([self.pushType isEqualToString:@"rsp-sl"]){ 
                 }else if([self.pushType isEqualToString:@"rsp-sl-1"]){
                 }
        }
    }
     
    四.RegistrationID 设备ID
    集成了 JPush SDK 的应用程序在第一次成功注册到 JPush 服务器时,JPush 服务器会给客户端返回一个唯一的该设备的标识 - RegistrationID
    应用程序可以把此 RegistrationID 保存以自己的应用服务器上,然后就可以根据 RegistrationID 来向设备推送消息或者通知。

    iOS 9系统,应用卸载重装,APNs返回的devicetoken会发生变化,开发者需要获取设备最新的Registration id。请在kJPFNetworkDidLoginNotification的实现方法里面调用"RegistrationID"这个接口来获取 RegistrationID。

     
     
    五.设置JPush服务器中存储的badge值
    + (BOOL)setBadge:(int)value
    
    
    设置badge值,本地仍须调用UIApplication:setApplicationIconBadgeNumber函数
     
  • 相关阅读:
    Apache Dubbo已不再局限于Java语言
    生产Server遭挖矿程序入侵,暴力占用CPU
    【转载】【原创】贵在,难在,成在
    【转载】【原创】生命中,要有自己的一方晴天
    (转)网上看的一篇文章,感觉会给程序员一些启发
    (转)在JSP客户端限制表单重复提交
    (转)用javascript做删除时的提示信息
    (转)上传自动显示图片 代码
    控制文字长度,多出的文字用省略号代替
    PS快捷键 未完
  • 原文地址:https://www.cnblogs.com/cfl911014/p/5276197.html
Copyright © 2011-2022 走看看