極光推送以及點(diǎn)擊消息進(jìn)行處理

////? Created by 徐岸 on 2017/5/19.//? Copyright ? 2017年 xuan. All rights reserved.//#import "AppDelegate.h"http:// 引 JPush功能所需頭 件#import "JPUSHService.h"http:// iOS10注冊APNs所需頭 件#define XAPressNewsTVCOne @"XAInformationVCOne"#define XAPushNotification @"XAPushNotification"#ifdef NSFoundationVersionNumber_iOS_9_x_Max#import#endif@interface AppDelegate ()@end

@implementation AppDelegate

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

#if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_7_1

if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {

[JPUSHService registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge |UIUserNotificationTypeSound | UIUserNotificationTypeAlert)? ? categories:nil];

} else {

[JPUSHService registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)

#else

categories:nil];

[JPUSHService registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)

#endif

categories:nil];

}

[JPUSHService setupWithOption:launchOptions];

if (launchOptions) {// 判斷是否通知進(jìn)來 //值得注意的是程序在殺死的情況下就會走當(dāng)前? didFinishLaunching .. 的方法

//第三中情況就是程序在殺死的情況下,因?yàn)槌绦蛟跉⑺赖臅r(shí)候你根本就不能接收到通知,所以不能通過通知去做標(biāo)記,,我在這里采用的是在點(diǎn)擊接收到遠(yuǎn)程通知的情況下在偏好設(shè)置里面保存一個(gè)值,然后在進(jìn)入到你的要跳轉(zhuǎn)之前的界面去,判斷是否保存了這個(gè)值,保存了這個(gè)值就代表你是點(diǎn)擊遠(yuǎn)程消息進(jìn)來的,,在做跳轉(zhuǎn)

NSDictionary * remoteNotification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];

if (remoteNotification) {

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

[defaults setObject:@"YES" forKey:@"Notification"];

[defaults synchronize];

}

}

//Required

//notice: 3.0.0及以后版本注冊可以這樣寫,也可以繼續(xù)用之前的注冊方式

JPUSHRegisterEntity * entity = [[JPUSHRegisterEntity alloc] init];

entity.types = JPAuthorizationOptionAlert|JPAuthorizationOptionBadge|JPAuthorizationOptionSound;

if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {

}

[JPUSHService registerForRemoteNotificationConfig:entity delegate:self];

// Required

// init Push

// notice: 2.1.5版本的SDK新增的注冊 法粘茄,改成可上報(bào)IDFA,如果沒有使 IDFA直接傳nil

// 如需繼續(xù)使 pushConfig.plist 件聲明appKey等配置內(nèi)容活玲,請依舊使

[JPUSHService setupWithOption:launchOptions appKey:@"你在極光創(chuàng)建應(yīng)用的appKey"

channel:@"App Store"

apsForProduction:YES? // YES代表是生成狀態(tài), NO是發(fā)布狀態(tài)(打包前注意檢查應(yīng)用環(huán)境)

advertisingIdentifier:nil];

return YES;

}

- (void)application:(UIApplication *)application

didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {

/// Required - 注冊 DeviceToken

[JPUSHService registerDeviceToken:deviceToken];

}

// 發(fā)送數(shù)據(jù)給極光 極光幫助程序員保存數(shù)據(jù)

// iOS 10 Support

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

// Required

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

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

[JPUSHService handleRemoteNotification:userInfo];

}

// 需要執(zhí)行這個(gè)方法螟左,選擇是否提醒用戶,有Badge、Sound匆骗、Alert三種類型可以選擇設(shè)置

completionHandler(UNNotificationPresentationOptionBadge | UNNotificationPresentationOptionSound | UNNotificationPresentationOptionAlert);

}

// 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];

}

completionHandler();? // 系統(tǒng)要求執(zhí)行這個(gè)方法

}

// 遠(yuǎn)程推送通知,點(diǎn)擊消息會調(diào)用的方法

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

// Required, iOS 7 Support

[JPUSHService handleRemoteNotification:userInfo];

completionHandler(UIBackgroundFetchResultNewData);

if ([UIApplication sharedApplication].applicationState == UIApplicationStateActive) {

//self.homeVC = (XAHomeController *)[self currentViewController];

// 第一種情況前臺運(yùn)行? (我的處理是彈出一個(gè)彈框在前臺做的提示處理,首先的是你要拿到當(dāng)前在屏幕顯示的控制器);

NSString *apnCount = userInfo[@"aps"][@"alert"];

UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"溫馨提示您有一條推送信息" message:apnCount delegate:self cancelButtonTitle:@"查看" otherButtonTitles:@"取消", nil];

alert.delegate = self;

[alert show];

}else{

//第二種情況后臺掛起時(shí)

[self goToMssageViewControllerWithDict:nil];

}

}

- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings{

[application registerForRemoteNotifications];

}

- (void)applicationWillEnterForeground:(UIApplication *)application {

[application setApplicationIconBadgeNumber:0];? //清除角標(biāo)

[application cancelAllLocalNotifications];

}

//遠(yuǎn)程通知跳轉(zhuǎn)

-(void)goToMssageViewControllerWithDict:(NSDictionary *)dict

{

//此處的處理方法是點(diǎn)擊消息跳轉(zhuǎn)界面到指定要跳轉(zhuǎn)之前的控制器1.然后發(fā)送一條通知,2在跳轉(zhuǎn)界面到指定要跳轉(zhuǎn)之前的控制器你去接收通知,,如果接收到通知了就代表是點(diǎn)擊遠(yuǎn)程消息進(jìn)來的,最后進(jìn)行跳轉(zhuǎn)

UITabBarController *tabBarC = (UITabBarController *)self.window.rootViewController;

// 跳轉(zhuǎn)控制器

tabBarC.selectedIndex = 0;

[[NSNotificationCenter defaultCenter] postNotificationName:XAPushNotification object:nil];

}

/**

注意點(diǎn)? 1.Xcode 8.0要進(jìn)行開啟遠(yuǎn)程通知的權(quán)限,在app 設(shè)置里 ->capabilities開啟

2.如果你集成的極光推送要與你們的后臺服務(wù)器進(jìn)行對接,那你就要配置一個(gè)命名叫PushConfig的plist文件.文件的作用,好像就是告訴后臺一寫信息,里面有三個(gè)的key,不知道怎么配就百度下哦.

3.蘋果遠(yuǎn)程推送如果你的應(yīng)用正在前臺,是接收不到遠(yuǎn)程提示的,但是你能接收到通知的哦,,qq,微信哪種是自定義的處理哦.. 你可以參考我上面的處理,在做操作

4.這里的功能代碼適合的程度是:1.實(shí)現(xiàn)app在三種轉(zhuǎn)臺下都能接收到消息的處理,2.實(shí)現(xiàn)可自己這邊的后臺服務(wù)器與機(jī)關(guān)服務(wù)器的對接功能,可以直接通過自己這邊的服務(wù)器去發(fā)送遠(yuǎn)程通知,3.接收到消息能跳轉(zhuǎn)到單個(gè)指定的控制器,

*/

/**

常見問題點(diǎn)擊推送消息發(fā)送成功但收不到消息>以及代碼里顯示成功但極光上成功發(fā)送,接收為0的建議:

1.確保你的appKey,證書,推送權(quán)限是否開啟,上線環(huán)境是否匹配.

2.如果你們后臺對接了極光服務(wù)器,你是否配置了PushConfig的plist服務(wù)器.沒有配置是接收不到的

3.檢查代碼,判斷排除,你的代碼接收到了極光發(fā)送過來的通知沒

4.確保是否是因?yàn)闃O光服務(wù)器的延遲導(dǎo)致通知阻塞,或者是極光服務(wù)器炸了,這我真遇到了...

5.一定要加入一下極光群,在官網(wǎng)有哦,關(guān)注下最新的動態(tài),進(jìn)行交流提問,你面有大神哦.

*/

@end

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末劳景,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子碉就,更是在濱河造成了極大的恐慌盟广,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瓮钥,死亡現(xiàn)場離奇詭異筋量,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)碉熄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門桨武,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人锈津,你說我怎么就攤上這事呀酸。” “怎么了琼梆?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵性誉,是天一觀的道長。 經(jīng)常有香客問我茎杂,道長错览,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任煌往,我火速辦了婚禮倾哺,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘刽脖。我一直安慰自己悼粮,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布曾棕。 她就那樣靜靜地躺著扣猫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪翘地。 梳的紋絲不亂的頭發(fā)上申尤,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天,我揣著相機(jī)與錄音衙耕,去河邊找鬼昧穿。 笑死,一個(gè)胖子當(dāng)著我的面吹牛橙喘,可吹牛的內(nèi)容都是我干的时鸵。 我是一名探鬼主播,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼饰潜!你這毒婦竟也來了初坠?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤彭雾,失蹤者是張志新(化名)和其女友劉穎碟刺,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體薯酝,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡半沽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了吴菠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片者填。...
    茶點(diǎn)故事閱讀 38,163評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖做葵,靈堂內(nèi)的尸體忽然破棺而出幔托,到底是詐尸還是另有隱情,我是刑警寧澤蜂挪,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布重挑,位于F島的核電站,受9級特大地震影響棠涮,放射性物質(zhì)發(fā)生泄漏谬哀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一严肪、第九天 我趴在偏房一處隱蔽的房頂上張望史煎。 院中可真熱鬧,春花似錦驳糯、人聲如沸篇梭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽恬偷。三九已至,卻和暖如春帘睦,著一層夾襖步出監(jiān)牢的瞬間袍患,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工竣付, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留诡延,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓古胆,卻偏偏與公主長得像肆良,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內(nèi)容