关于iOS push一些问题的理解
2015-07-27 14:00
483 查看
好多初入iOS行业的的程序员,会对一些证书以及push方面会遇到一些问题,由于不熟悉流程,会对初入行着造成一些困扰。下面简单总结一下 关于iOS push以及证书的问题。
首先,先说一下push的原理性的东西,iOS push的实现实质是通过apple官方的Apns实现的,其实这为我们提供了好多方便,因为我们只需要把要push的内容发给苹果的apns 服务 apns 会自动发送给我们的用户。具体如下:
第一步:我们得获得证书,https://developer.apple.com 获得的证书分为开打模式,和线上模式,在证书中一定要开启push消息功能,这里不再赘述。
第二步:需要在appdelegate文件下的
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions//方法中添加如下代码
{
if ([[[UIDevice currentDevice] systemVersion] floatValue]
>= 8.0) {
UIUserNotificationType myTypes = UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert;
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:myTypes categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:settings];
}else {
UIRemoteNotificationType myTypes = UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeSound;
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:myTypes];
}
}
第三步:
// 在 iOS8 系统中,还需要添加这个方法。
- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings*)notificationSettings
{
[application registerForRemoteNotifications];
}
第四步:通过以下方法获取deviceToken,该步的作用注册远程push 一般操作是将自己的deviceToken发送到自己的服务通过服务器发送到苹果的Apns服务器
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
{
}
第五步:通过以下方法获取推送的消息 获取的内容在userInfo中已介指对的形式存在 解析字典 并且在此处实现相应的操作:(点击通知的消息时候调用此方法)
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{}
接下来说一下易忽略的地方:ios系统是分为几种不同的状态的 关于push 我只分析三种状态,1、前台 2、推到后台 3、退出客户端
前两种的状态下接收到push 是在第五步方法中进行解析,而在退出客户端的情况,是在第二的步的时候获取内容的 多需内容在launchOptions这个字典中 该字典相当于第五步中的userInfo这个字典 里面的数据是一样的。说这个,就是想告诉大家,当解析push数据的时候 一定要考虑全面,不然会可能不管push什么内容,都会停留在首页的情况。
当然现在有好多三方的可以让我们更方便的处理push问题 比如 百度push,已封装的非常简单实用,http://push.baidu.com!
谢谢您的阅读,希望对您开发中有所帮助!
首先,先说一下push的原理性的东西,iOS push的实现实质是通过apple官方的Apns实现的,其实这为我们提供了好多方便,因为我们只需要把要push的内容发给苹果的apns 服务 apns 会自动发送给我们的用户。具体如下:
第一步:我们得获得证书,https://developer.apple.com 获得的证书分为开打模式,和线上模式,在证书中一定要开启push消息功能,这里不再赘述。
第二步:需要在appdelegate文件下的
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions//方法中添加如下代码
{
if ([[[UIDevice currentDevice] systemVersion] floatValue]
>= 8.0) {
UIUserNotificationType myTypes = UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert;
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:myTypes categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:settings];
}else {
UIRemoteNotificationType myTypes = UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeSound;
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:myTypes];
}
}
第三步:
// 在 iOS8 系统中,还需要添加这个方法。
- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings*)notificationSettings
{
[application registerForRemoteNotifications];
}
第四步:通过以下方法获取deviceToken,该步的作用注册远程push 一般操作是将自己的deviceToken发送到自己的服务通过服务器发送到苹果的Apns服务器
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
{
}
第五步:通过以下方法获取推送的消息 获取的内容在userInfo中已介指对的形式存在 解析字典 并且在此处实现相应的操作:(点击通知的消息时候调用此方法)
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{}
接下来说一下易忽略的地方:ios系统是分为几种不同的状态的 关于push 我只分析三种状态,1、前台 2、推到后台 3、退出客户端
前两种的状态下接收到push 是在第五步方法中进行解析,而在退出客户端的情况,是在第二的步的时候获取内容的 多需内容在launchOptions这个字典中 该字典相当于第五步中的userInfo这个字典 里面的数据是一样的。说这个,就是想告诉大家,当解析push数据的时候 一定要考虑全面,不然会可能不管push什么内容,都会停留在首页的情况。
当然现在有好多三方的可以让我们更方便的处理push问题 比如 百度push,已封装的非常简单实用,http://push.baidu.com!
谢谢您的阅读,希望对您开发中有所帮助!
相关文章推荐
- javaScript中push函数用法实例分析
- jquery中push()的用法(数组添加元素)
- perl push的用法及子程序返回值的反思
- javascript使用数组的push方法完成快速排序
- JavaScript使用push方法添加一个元素到数组末尾用法实例
- JavaScript数组函数unshift、shift、pop、push使用实例
- 简介JavaScript中的push()方法的使用
- 通过 Push 来提高移动应用的活跃度 3ff0
- Eclipse中Pull参数问题
- 基于dwr2.0的Push推送技术详细解析以及实例
- 将在本地创建的Git仓库push到Git@OSC
- Fail to push agent from Primary site to client machine
- 使用友盟消息推送中遇到的哪些问题--索引(开发者必读)
- iOS(iOS7 iOS6)推送教程(一步一步实现,简单易懂)
- 在 Android 上应用极光推送实现 Push 功能
- push没反应
- gcm 推送注册失败
- 掌握Push才能提高APP打开率
- 推送服务要选真正实现互动的
- 【iOS】远程消息推送