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函數
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM