iOS消息远程推送通知
2019/7/9 23:12:44
本文主要是介绍iOS消息远程推送通知,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
本文实例为大家分享了iOS消息推送、iOS远程通知代码,供大家参考,具体内容如下
消息推送
/* 要开发测试消息机制的程序,必须用真机测试 推送消息的类型 UIRemoteNotificationTypeNone 不接收推送消息 UIRemoteNotificationTypeBadge 接收图标数字 UIRemoteNotificationTypeSound 接收音频 UIRemoteNotificationTypeAlert 接收消息文字 UIRemoteNotificationTypeNewsstandContentAvailability 接收订阅消息 要想监听到注册的deviceToken需要在苹果的开发者中心,进行一些设置工作才可以。 */ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 设置应用程序能够接收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. 从系统偏好取之前的token NSData *oldToken = [[NSUserDefaults standardUserDefaults]objectForKey:@"deviceToken"]; // 2. 新旧token进行比较 if (![oldToken isEqualToData:deviceToken]) { // 3. 如果不一致,保存token到系统偏好 [[NSUserDefaults standardUserDefaults]setObject:deviceToken forKey:@"deviceToken"]; // 4. 使用post请求传输新旧token至服务器 // 1) url // 具体的URL地址以及POST请求中的参数和格式,是由公司的后端程序员提供的 // 2) request POST body(包含新旧token的数据) // 3) connection 的异步 } }
远程通知
/** 远程消息推送必须在真机上运行! */ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 需要告诉苹果的服务器,当前应用程序需要接收远程通知 [application registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound]; return YES; } #pragma mark - 获取到设备的代号(令牌) // 接收到苹果返回的设备代号 - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { // 第一次运行获取到DeviceToken时间会比较长! NSLog(@"%@", deviceToken); // 将deviceToken转换成字符串,以便后续使用 NSString *token = [deviceToken description]; NSLog(@"description %@", token); // ======================================================= // 如果DeviceToken发生变化,需要通知服务器 // 每次都记录住从服务器获取到得DeviceToken // 再次获取时进行比对 // 从偏好设置取出当前保存的Token NSString *oldToken = [[NSUserDefaults standardUserDefaults] objectForKey:@"DeviceToken"]; // 当Token发生变化时,提交给服务器保存新的Token // if (![oldToken isEqualToString:token]) { // // // 将deviceToken通过Post请求,提交给自己的服务器即可! // // 发送Post请求 // NSURL *url = [NSURL URLWithString:@"公司后台服务器的网址"]; // NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10.f]; // // request.HTTPMethod = @"POST"; // request.HTTPBody = @"转换后的设备ID以及其他信息[之前的Token]"; // // // SQL: update t_deviceTable set token = newToken where token = oldToken; // // // 同步:必须执行完才能继续 // // 异步:直接交给其他线程工作,不干扰主线程工作,用户也感觉不到延迟 // [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { // // 偷偷的将用户信息传送到公司的服务器 // }]; // } // 将Token保存至系统偏好 [[NSUserDefaults standardUserDefaults] setObject:token forKey:@"DeviceToken"]; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持找一找教程网。
这篇关于iOS消息远程推送通知的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-12Axios库资料:新手入门必读教程
- 2024-11-11Axios库项目实战:新手入门教程
- 2024-09-29Axios库教程:初学者必备指南
- 2024-08-29Axios库资料:新手入门指南与基本使用教程
- 2024-03-14system bios shadowed
- 2024-03-14gabios
- 2024-02-07iOS应用提交上架的最新流程
- 2024-02-06打包 iOS 的 IPA 文件
- 2023-12-07uniapp打包iOS应用并通过审核:代码混淆的终极解决方案 ?
- 2023-11-25uniapp IOS从打包到上架流程(详细简单) 原创