iOS开发之(APNS)远程推送实现代码 附证书与真机调试

这篇文章主要为大家详细介绍了iOS开发之(APNS)远程推送实现代码,附证书与真机调试,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

远程推送通知

什么是远程推送通知

顾名思义,就是从远程服务器推送给客户端的通知(需要联网)远程推送服务,又称为APNs(ApplePush Notification Services)

为什么需要远程推送通知传统获取数据的局限性只要用户关闭了app,就无法跟app的服务器沟通,无法从服务器上获得最新的数据内容远程推送通知可以解决以上问题不管用户打开还是关闭app,只要联网了,都能接收到服务器推送的远程通知远程推送通知使用须知所有的苹果设备,在联网状态下,都会与苹果的服务器建立长连接什么是长连接只要联网了,就一直建立连接长连接的作用时间校准系统升级查找我的iPhone.....长连接的好处数据传输速度快数据保持最新状态推送原理

Provider就是我们公司的服务器,经过苹果的APNs服务器找到我们的设备,给我们设备上的客户端应用推送消息。那APNs服务器是如何找到我们的设备和设备上的应用呢,答案就是DeviceToken,DeviceToken需要配置推送证书才可以获得,推送证书需要知道我们的APPID(应用的BundleID,应用唯一标识)和UDID(设备唯一标识),还有自己服务器的UDID,我们先来打一个推送证书,登录开发者中心,点击证书模块

点击iOS Apps的证书

进入这样的界面

点击App IDs,然后点右上角的加号

箭头所指为应用ID描述,我们假设写了一个很牛逼的应用,ExcitedApp,接下来我们填入App ID,注意这里的AppID是固定的,不能有星号

接下来我们添加App所需要的服务,然后点击Continue

一直点击下一步,完成,在App IDs 列表里面找到我们的ExcitedApp,我们看到

发现Push服务是黄色警告,这时点击Edit,找到推送模块,我们需要配置推送证书了,点击红色箭头所指的位置

我们需要一个CSR文件,CSR是一个签名请求文件,意思就是让我们的MAC具有调试推送的权限,点击继续

点击了继续我们看到

然后我们打开Mac上的钥匙串,从证书颁发机构请求证书

前两个随便写,最后选择存到磁盘

完成之后,接下来我们就可以添加CSR文件了

添加完,选择生成

证书配好了,下载下来

配好了!

顺带着我们把发布的证书也给配了,步骤都一样

打开我们刚刚下载的证书,添加到钥匙串中

终于能开始整我们的项目了,快哭了都

不要忘记修改bundle id 这里还要搞一个真机调试的证书才可以

真机调试的东西这里不累述,搞了这么多东西,我们终于可以拿到DeviceToken了

在AppDelegate.m中注册推送


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  
  if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {
  UIUserNotificationType myTypes = UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound;
  UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:myTypes categories:nil];
  [[UIApplication sharedApplication] registerUserNotificationSettings:settings];
 }else
 {
  UIRemoteNotificationType myTypes = UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeSound;
  [[UIApplication sharedApplication] registerForRemoteNotificationTypes:myTypes];
 }
 

  return YES;
}


-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
 NSLog(@"%@",deviceToken);
}


//ios8 另外增加以下方法
#ifdef __IPHONE_8_0
- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings
{
 [application registerForRemoteNotifications];
}
#endif

DeviceToken处理流程

接下来我们用SmartPush来测试一下我们的推送:https://github.com/shaojiankui/SmartPush

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持得得之家。

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

本文主要介绍了IOS 性能优化中离屏渲染的资料,提供了几种方法讲解了优化,有需要的小伙伴可以参考下
一般有Reachability和AFNetworking监测两种方式,都是第三方的框架,下文逐一详细给大家讲解,感兴趣的朋友一起看看吧
这篇文章主要介绍了IOS 陀螺仪开发实例详解的相关资料,介绍了螺旋仪参数意义及CoreMotion框架,需要的朋友可以参考下
这篇文章主要介绍了IOS 实现摇一摇的操作的相关资料,需要的朋友可以参考下
这篇文章主要给大家总结了iOS实现渐变颜色的三种方法,分别是利用CAGradientLayer实现渐变、Core Graphics相关方法实现渐变以及用CAShapeLayer作为layer的mask属性实现,大家可以根据自己的需要选择使用,下面来一起看看吧。
这篇文章主要介绍了cmake ios终端下执行提示错误 iOS version not found, tested: [5.0;5.1;6.0;6.1;7.0;8.3]的解决方案的相关资料,需要的朋友可以参考下