iOS消息遠(yuǎn)程推送通知
本文實(shí)例為大家分享了iOS消息推送、iOS遠(yuǎn)程通知代碼,供大家參考,具體內(nèi)容如下
消息推送
/*
要開發(fā)測試消息機(jī)制的程序,必須用真機(jī)測試
推送消息的類型
UIRemoteNotificationTypeNone 不接收推送消息
UIRemoteNotificationTypeBadge 接收?qǐng)D標(biāo)數(shù)字
UIRemoteNotificationTypeSound 接收音頻
UIRemoteNotificationTypeAlert 接收消息文字
UIRemoteNotificationTypeNewsstandContentAvailability 接收訂閱消息
要想監(jiān)聽到注冊的deviceToken需要在蘋果的開發(fā)者中心,進(jìn)行一些設(shè)置工作才可以。
*/
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// 設(shè)置應(yīng)用程序能夠接收APNS推送的消息
[application registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound];
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
#pragma mark - 獲取DeviceToken
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
NSLog(@"%@", deviceToken);
// 1. 從系統(tǒng)偏好取之前的token
NSData *oldToken = [[NSUserDefaults standardUserDefaults]objectForKey:@"deviceToken"];
// 2. 新舊token進(jìn)行比較
if (![oldToken isEqualToData:deviceToken]) {
// 3. 如果不一致,保存token到系統(tǒng)偏好
[[NSUserDefaults standardUserDefaults]setObject:deviceToken forKey:@"deviceToken"];
// 4. 使用post請(qǐng)求傳輸新舊token至服務(wù)器
// 1) url
// 具體的URL地址以及POST請(qǐng)求中的參數(shù)和格式,是由公司的后端程序員提供的
// 2) request POST body(包含新舊token的數(shù)據(jù))
// 3) connection 的異步
}
}
遠(yuǎn)程通知
/**
遠(yuǎn)程消息推送必須在真機(jī)上運(yùn)行!
*/
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// 需要告訴蘋果的服務(wù)器,當(dāng)前應(yīng)用程序需要接收遠(yuǎn)程通知
[application registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound];
return YES;
}
#pragma mark - 獲取到設(shè)備的代號(hào)(令牌)
// 接收到蘋果返回的設(shè)備代號(hào)
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
// 第一次運(yùn)行獲取到DeviceToken時(shí)間會(huì)比較長!
NSLog(@"%@", deviceToken);
// 將deviceToken轉(zhuǎn)換成字符串,以便后續(xù)使用
NSString *token = [deviceToken description];
NSLog(@"description %@", token);
// =======================================================
// 如果DeviceToken發(fā)生變化,需要通知服務(wù)器
// 每次都記錄住從服務(wù)器獲取到得DeviceToken
// 再次獲取時(shí)進(jìn)行比對(duì)
// 從偏好設(shè)置取出當(dāng)前保存的Token
NSString *oldToken = [[NSUserDefaults standardUserDefaults] objectForKey:@"DeviceToken"];
// 當(dāng)Token發(fā)生變化時(shí),提交給服務(wù)器保存新的Token
// if (![oldToken isEqualToString:token]) {
//
// // 將deviceToken通過Post請(qǐng)求,提交給自己的服務(wù)器即可!
// // 發(fā)送Post請(qǐng)求
// NSURL *url = [NSURL URLWithString:@"公司后臺(tái)服務(wù)器的網(wǎng)址"];
// NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10.f];
//
// request.HTTPMethod = @"POST";
// request.HTTPBody = @"轉(zhuǎn)換后的設(shè)備ID以及其他信息[之前的Token]";
//
// // SQL: update t_deviceTable set token = newToken where token = oldToken;
//
// // 同步:必須執(zhí)行完才能繼續(xù)
// // 異步:直接交給其他線程工作,不干擾主線程工作,用戶也感覺不到延遲
// [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
// // 偷偷的將用戶信息傳送到公司的服務(wù)器
// }];
// }
// 將Token保存至系統(tǒng)偏好
[[NSUserDefaults standardUserDefaults] setObject:token forKey:@"DeviceToken"];
}
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Nagios遠(yuǎn)程監(jiān)控安裝與配置詳解圖文
- iOS10 適配遠(yuǎn)程推送功能實(shí)現(xiàn)代碼
- iOS實(shí)現(xiàn)遠(yuǎn)程推送原理及過程
- iOS實(shí)現(xiàn)播放遠(yuǎn)程網(wǎng)絡(luò)音樂的核心技術(shù)點(diǎn)總結(jié)
- iOS10最新實(shí)現(xiàn)遠(yuǎn)程通知的開發(fā)教程詳解
- iOS開發(fā)之運(yùn)動(dòng)事件和遠(yuǎn)程控制
- 詳解iOS本地推送與遠(yuǎn)程推送
- iOS實(shí)時(shí)監(jiān)控網(wǎng)絡(luò)狀態(tài)的改變
- iOS實(shí)現(xiàn)實(shí)時(shí)檢測網(wǎng)絡(luò)狀態(tài)的示例代碼
- iOS中的實(shí)時(shí)遠(yuǎn)程配置全紀(jì)錄
相關(guān)文章
iOS實(shí)現(xiàn)獲取系統(tǒng)iTunes音樂的方法示例
這篇文章主要給大家介紹了關(guān)于iOS如何實(shí)現(xiàn)獲取系統(tǒng)iTunes音樂的相關(guān)資料,文中通過示例代碼給大家詳細(xì)介紹了實(shí)現(xiàn)的方法,并給大家介紹了MPMediaPickerController的相關(guān)知識(shí),對(duì)大家的學(xué)習(xí)或者工作具有一定的幫助,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-11-11
iOS逆向工程使用dumpdecrypted工具給App脫殼
這篇文章主要介紹了iOS逆向工程使用dumpdecrypted工具給App脫殼的相關(guān)資料,本文圖文并茂給大家介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09
詳解IOS的Automatically Sign在設(shè)備上打包
本篇教程主要給大家分享了IOS的Automatically Sign如何在設(shè)備上直接打包,有需要的朋友參考學(xué)習(xí)下。2018-01-01
講解iOS開發(fā)中基本的定位功能實(shí)現(xiàn)
這篇文章主要介紹了講解iOS開發(fā)中基本的定位功能實(shí)現(xiàn),示例基于傳統(tǒng)的Objective-C,需要的朋友可以參考下2015-10-10
iOS開發(fā)中UITableview控件的基本使用及性能優(yōu)化方法
這篇文章主要介紹了iOS開發(fā)中UITableview控件的基本使用及性能優(yōu)化方法,代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下2015-12-12
iOS版微信朋友圈識(shí)別圖片位置信息 如何實(shí)現(xiàn)?
這篇文章主要為大家詳細(xì)介紹了iOS版微信朋友圈識(shí)別圖片位置信息的實(shí)現(xiàn)方法2016-10-10
IOS 開發(fā)之swift中UIView的擴(kuò)展使用的實(shí)例
這篇文章主要介紹了IOS 開發(fā)之swift中UIView的擴(kuò)展使用的實(shí)例的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下2017-09-09

