您的位置:首页 > 移动开发 > IOS开发

关于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