iOS消息远程推送通知

所属分类: 软件编程 / IOS 阅读数: 2028
收藏 0 赞 0 分享

本文实例为大家分享了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开发笔记--详解UILabel的相关属性设置

这篇文章主要介绍了iOS开发笔记--详解UILabel的相关属性设置,对初学者具有一定的参考价值,有需要的可以了解一下。
收藏 0 赞 0 分享

iOS中获取系统相册中的图片实例

这篇文章主要介绍了iOS中获取系统相册中的图片实例,具有一定的参考价值没有需要的朋友可以了解一下。
收藏 0 赞 0 分享

iOS 检测网络状态的两种方法

一般有Reachability和AFNetworking监测两种方式,都是第三方的框架,下文逐一详细给大家讲解,感兴趣的朋友一起看看吧
收藏 0 赞 0 分享

IOS 性能优化中离屏渲染

本文主要介绍了IOS 性能优化中离屏渲染的资料,提供了几种方法讲解了优化,有需要的小伙伴可以参考下
收藏 0 赞 0 分享

iOS获取当前设备型号等信息(全)包含iPhone7和iPhone7P

这篇文章主要介绍了iOS获取当前设备型号设备信息的总结包含iPhone7和iPhone7P,包括ios7之前之后的获取方式,本文接的非常详细,具有参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

iOS实现爆炸的粒子效果示例代码

之前在网上看到了一个Android实现的爆炸效果,感觉非常不错,所以自己尝试用iOS来实现下效果,现在将实现的过程、原理以及遇到的问题分享给大家,有需要的朋友们可以参考借鉴,下面来一起看看吧。
收藏 0 赞 0 分享

iOS毕业设计之天气预报App

这篇文章主要为大家详细介绍了iOS毕业设计之天气预报App,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

iOS轻点、触摸和手势代码开发

这篇文章主要为大家详细介绍了iOS轻点、触摸和手势代码开发,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

iOS 实现多代理的方法及实例代码

这篇文章主要介绍了iOS 实现多代理的方法及实例代码的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

iOS文字渐变色效果的实现方法

在大家日常开发iOS的过程中,可能会遇到要实现文字渐变色的效果,这篇文章文章通过示例代码和详细的步骤介绍了如何利用iOS实现文字渐变色的效果,实现后的很不错,感兴趣的朋友们下面来一起看看吧。
收藏 0 赞 0 分享
查看更多