推送 iOS 10

1:APNs通知與應用內消息對比ios

極光文檔上面是這麼寫的json

後來更直接的說法是:xcode

2:下面是介紹app不一樣狀態下面接受到通知調用的方法:服務器

// iOS 10 Support,這個是程序在前臺接受到通知是相應的方法app

- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler {less

    // Requiredide

    NSDictionary * userInfo = notification.request.content.userInfo;測試

    if([notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {fetch

        [JPUSHService handleRemoteNotification:userInfo];ui

    }

//若是是前臺收到了通知,也能夠設置提醒,具體的需求問問產品

    completionHandler(UNNotificationPresentationOptionNone); // 須要執行這個方法,選擇是否提醒用戶,有Badge、Sound、Alert三種類型能夠選擇設置

}

能夠經過上面的枚舉對前臺通知進行設置

 

// iOS 10 Support程序運行於後臺 點擊推送通知 都會走這個方法

- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler {

    // Required

    NSDictionary * userInfo = response.notification.request.content.userInfo;

    if([response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {

        [JPUSHService handleRemoteNotification:userInfo];

    }

    NSLog(@"%@",response.notification.request.content.body);

    completionHandler();  // 系統要求執行這個方法

}

//程序已經殺死

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    [Bugly startWithAppId:@"49c45f90fe"];    

    //遠程推送發送過來json字符串

    NSDictionary *userinfo = launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey];

通知的內容存在於launchOptions中

 NSDictionary *userinfo = launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey];

userinfo[@"aps"][@"alert"]

裏面能夠獲取到通知的內容

 

//靜默通知(靜默通知app死掉的時候不進行

靜默推送:收到推送(沒有文字沒有聲音),不用點開通知,不用打開APP,就能執行

使用靜默通知的關鍵意義是程序在後臺的時候可以在不點擊通知的(應爲靜默通知自己就沒有通知欄)敲敲的執行後臺的代碼

無論使用哪一種三方的推送(極光,融雲,個推,pushmeBaby),必定要設置

必定要加"content-available" : 1  (只設置這個字段的話,能夠實現後臺推送完成接收)

還有

sound,alert  badge也不能加,加入的話也是靜默推送,能夠測試時添加

實例靜默推送內容

由於靜默推送的關鍵意義在於後臺的推鬆,因此必定要記得打開app後臺推送的功能

若是升級了ios10,必定要按照最新的文檔進行集成

注意

1:應當提供

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {

  // Required, iOS 7 Support
  [JPUSHService handleRemoteNotification:userInfo];
  completionHandler(UIBackgroundFetchResultNewData);
}

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

  // Required,For systems with less than or equal to iOS6
  [JPUSHService handleRemoteNotification:userInfo];
}

 下面的方法會被上面的方法擠掉

若是想收到靜默通知,必須實現上面的方法而不是下面的

即靜默採用ios 7的方法替換原來的

 

2:關於證書:若是本身公司的後臺集成了極光推送,應當提供好推送的兩個證書的p12文件

生產證書不必定要上線

3:判斷程序在前臺的方法

[UIApplication sharedApplication].applicationState == UIApplicationStateActive

4:極光推送不展現小紅點

application.applicationIconBadgeNumber = 0;

[JPUSHService setBadge:0];(推向極光的服務器)

 

 關於通知的補充:

1:收到前臺通知調用的方法

 

2:通知上面添加的點擊事件,經過通知設置分類

 點擊上面不一樣的按鈕調用下面的方法,經過identifier進行區分

 

3:

 

4.繼承公司本身的推送只須要

appdelegate裏面設置appid便可

5:後臺進行的靜默通知,應該進行流量的判斷

下面是上網查的某位大神的關於靜默推送的相關知識點(只是借鑑一下)

 注意:關於設置badgeNumber

關於別名:

設置別名退出的時候記得清空別名

 [JPUSHService setTags:nil alias:[RFMyInfoSaveTool shareMyInfoTools].userName fetchCompletionHandle:^(int iResCode, NSSet *iTags, NSString *iAlias) {

        NSLog(@"%d-------------%@,-------------%@",iResCode,iTags,iAlias);

    }];

    

2.設置監聽登陸策劃成功的方法:

 [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(setAlis) name:kJPFNetworkDidLoginNotification object:nil];

 在登陸成功的通知方法裏面設置別名

可是爲了防止登陸以後已經註冊好了,可是登陸者的手機號還未上傳進來,咱們應當到登陸成功的回調裏面再次設置別名

//覆蓋可能爲空的別名

 [JPUSHService setTags:nil alias:[RFMyInfoSaveTool shareMyInfoTools].userName fetchCompletionHandle:^(int iResCode, NSSet *iTags, NSString *iAlias) {

        NSLog(@"%d-------------%@,-------------%@",iResCode,iTags,iAlias);

    }];

記得退出app的時候清空別名,否則退出了app還能收到通知,不符合產品的要求

 3.發佈的時候記得作的事情

1>記得將推送的發佈證書轉成p12傳給極光的後臺,若是是本身的後臺進行維護的,就給本身的後臺

2>記得打開xcode的推送的模式

3>測試推送ipa的時候記得選中極光的開發模式,不然ipa是收不到推送通知的

相關文章
相關標籤/搜索