友盟推送---小白都能看的懂的教程(二)

上篇簡書寫了在進行推送時的前期的準備,這次就從集成代碼開始寫了

iOS10中因為增加了通知的擴展践美,所以對于擴展部分也需要一個APP id述寡,并且這個id要和項目前綴類似。和以前的區(qū)別是顶滩,這個項目用了兩個APP ID余掖,4個Provisioning Profile文件(兩個開發(fā)環(huán)境,兩個生產環(huán)境)诲祸。以bundle id為com.umeng.umpmessage的項目為例:

請按著11.ios證書配置教程配置浊吏,他這個是以bundle id為com.umeng.umpmessage創(chuàng)建一個開發(fā)的描述文件,上傳商店的描述文件救氯,然后在以bundle id為com.umeng.umpmessage.* ? ? 創(chuàng)建一個開發(fā)的描述文件找田,上傳商店的描述文件,這就他所說的iOS10中因為增加了通知的擴展着憨,所以對于擴展部分也需要一個APP id墩衙,并且這個id要和項目前綴類似。和以前的區(qū)別是甲抖,這個項目用了兩個APP ID漆改,4個Provisioning Profile文件。?

在上一篇教程中我們所用的bundleid為com.umeng.pushtestdemo 而且也已經創(chuàng)建了他的兩種環(huán)境的描述文件准谚,所以我們這需要在創(chuàng)建第二個com.umeng.pushtestdemo.*? 創(chuàng)建他的兩種環(huán)境的描述文件

然后按著11.ios證書配置教程放到自己的工程里面挫剑,到此工程里面的證書配置就完成了。然后就是依賴庫的添加和代碼集成了

應用配置

提示

請先在【友盟+】消息推送管理后臺中創(chuàng)建App柱衔,獲得AppKey和AppSecret

2.1.1? 導入SDK

所需SDK文件夾:UMessage_Sdk_x.x.x

請在你的工程目錄結構中樊破,右鍵選擇Add->Existing Files…,選擇這個文件夾唆铐≌芷荩或者將這個文件夾拖入XCode工程目錄結構中,在彈出的界面中勾選Copy items into destination group's folder(if needed), 并確保Add To Targets勾選相應的target艾岂。

2.1.2? 引入庫文件

增加UserNotifications.framework到項目中顺少。

具體操作如下:點擊項目---->TARGET---->Build Phases---->Link Binary with Libraries ---->左側+號---->搜索UserNotifications---->選中UserNotifications.framework---->點擊Add

2.1.3? 配置(可選)

SDK采用ARC管理內存,非ARC項目也是默認支持,如遇問題脆炎,請聯(lián)系我們

如果您使用了-all_load梅猿,可能需要添加libz的庫:

TARGETS-->Build Phases-->Link Binary With Libraries--> + -->libz.dylib

2.1.4? 打開推送開關

點擊項目---->TARGET---->Capabilities,將這里的Push Notification的開關打開腕窥,效果如圖所示


注意:一定要打開Push Notification,且兩個steps都是正確的粒没,否則會報如下錯誤:Code=3000 "未找到應用程序的“aps-environment”的授權字符串"

2.2? 集成推送

打開*AppDelegate.m

2.2.1? 引入頭文件

引入UMessage.h,UserNotifications.h

2.2.2? 設置代理

設置UNUserNotificationCenterDelegate


2.2.3完整的初始化代碼


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


//友盟推送適配Https

[UMessage startWithAppkey:@"5923e1257f2c7455780001cb" launchOptions:launchOptions httpsEnable:YES];

[UMessage openDebugMode:YES];

[UMessage addLaunchMessageWithWindow:self.window finishViewController:[[TabBarController alloc]init]];

[UMessage registerForRemoteNotifications];

//iOS10必須加下面這段代碼。

UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];

center.delegate=self;

UNAuthorizationOptions types10=UNAuthorizationOptionBadge|UNAuthorizationOptionAlert|UNAuthorizationOptionSound;

[center requestAuthorizationWithOptions:types10 completionHandler:^(BOOL granted, NSError * _Nullable error) {

if (granted) {

//點擊允許

} else {

//點擊不允許

}

}];

//打開日志簇爆,方便調試

[UMessage setLogEnabled:YES];

}

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken

{

// 注冊devicetoken,并把nslog打印出來的devicetoken放到友盟的后臺測試設備那

[UMessage registerDeviceToken:deviceToken];

NSLog(@"UmengDeviceToken-%@",[[[[deviceToken description] stringByReplacingOccurrencesOfString: @"<" withString: @""]

stringByReplacingOccurrencesOfString: @">" withString: @""]

stringByReplacingOccurrencesOfString: @" " withString: @""]);

}

//iOS10以下使用這個方法接收通知

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

{

[UMessage didReceiveRemoteNotification:userInfo];

self.userInfo = userInfo;

//定制自定的的彈出框

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

{

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"標題"

message:@"Test On ApplicationStateActive"

delegate:self

cancelButtonTitle:@"確定"

otherButtonTitles:nil];

[alertView show];

}

}

//iOS10新增:處理前臺收到通知的代理方法

-(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler{

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

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

//應用處于前臺時的遠程推送接受

//關閉U-Push自帶的彈出框

[UMessage setAutoAlert:NO];

//必須加這句代碼

[UMessage didReceiveRemoteNotification:userInfo];

}else{

//應用處于前臺時的本地推送接受

}

//當應用處于前臺時提示設置,需要哪個可以設置哪一個

completionHandler(UNNotificationPresentationOptionSound|UNNotificationPresentationOptionBadge|UNNotificationPresentationOptionAlert);

}

//iOS10新增:處理后臺點擊通知的代理方法

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

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

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

//應用處于后臺時的遠程推送接受

//必須加這句代碼

[UMessage didReceiveRemoteNotification:userInfo];

}else{

//應用處于后臺時的本地推送接受

}

}


到此就可以實現(xiàn)簡單的推送了爽撒,但是這個時候點擊推送消息并不能真正跳到消息的詳情頁入蛆,這個我在下篇簡書中詳細講解,目前這個推送的集成是簡單版的硕勿,如果想有富文本推送請參考友盟的官網(wǎng)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末哨毁,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子源武,更是在濱河造成了極大的恐慌扼褪,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件粱栖,死亡現(xiàn)場離奇詭異话浇,居然都是意外死亡,警方通過查閱死者的電腦和手機闹究,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門幔崖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人渣淤,你說我怎么就攤上這事赏寇。” “怎么了价认?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵嗅定,是天一觀的道長。 經常有香客問我用踩,道長渠退,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任捶箱,我火速辦了婚禮智什,結果婚禮上,老公的妹妹穿的比我還像新娘丁屎。我一直安慰自己荠锭,他們只是感情好,可當我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布晨川。 她就那樣靜靜地躺著证九,像睡著了一般删豺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上愧怜,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天呀页,我揣著相機與錄音,去河邊找鬼拥坛。 笑死蓬蝶,一個胖子當著我的面吹牛,可吹牛的內容都是我干的猜惋。 我是一名探鬼主播丸氛,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼著摔!你這毒婦竟也來了缓窜?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤谍咆,失蹤者是張志新(化名)和其女友劉穎禾锤,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體摹察,經...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡恩掷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了港粱。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片螃成。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖查坪,靈堂內的尸體忽然破棺而出寸宏,到底是詐尸還是另有隱情,我是刑警寧澤偿曙,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布氮凝,位于F島的核電站,受9級特大地震影響望忆,放射性物質發(fā)生泄漏罩阵。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一启摄、第九天 我趴在偏房一處隱蔽的房頂上張望稿壁。 院中可真熱鬧,春花似錦歉备、人聲如沸傅是。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽喧笔。三九已至帽驯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間书闸,已是汗流浹背尼变。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留浆劲,地道東北人嫌术。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像梳侨,于是被迫代替她去往敵國和親蛉威。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內容