老板要做推送 现在准备用第三方 极光推送
1. 先去开发者账号 来到Certificaters 生成两个证书 (调试用的推送证书 + 发布程序用的推送证书) 记得点击Push属性
证书的作用 : 告知苹果苹果服务器是哪台Mac在调试或者发布可推送程序
所以生成证书必须要 上传CSR文件,生成完两个证书后,下载到本地双击,备用。
来到钥匙串,把对应的两个证书,导出为p12文件,此时需要你填写密码,不要随便设置,极光推送上传p12文件的时候,会要求输入密码。
如何生成CSR文件:
在钥匙串中我们点击我们电脑左上角的钥匙串选项,在选项中选在证书助理选项中的从证书颁发机构请求证书选项.
随便填,保存到磁盘即可(后续要上传生成证书)
2.生成完证书,来到Identifies,要生成你的AppID,需要证书+应用的BundleID 即告知苹果服务器 哪台电脑开发的哪个程序
3.描述文件: 用来发布程序 或者 调试程序使用的 需要AppID 以及 设备号 即 哪台电脑开发的哪个程序哪些设备可以使用,生成完之后,下载到本地,双击即可。
4.现在来到极光推送的官网,创建新应用,应用名称最好和自己的应用程序名称一致,之后上传第1个步骤的的两个p12文件,成功后会显示“已验证”。
5.配置极光的SDK,官网说的很清楚,跟着做就可以了。
6.粘贴极光推送必须要用的3个方法
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { #if __IPHONE_OS_VERSION_MAX_ALLOWED > __IPHONE_7_1 if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) { //categories [APService registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert) categories:nil]; } else { //categories nil [APService registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert) #else //categories nil categories:nil]; [APService registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert) #endif // Required categories:nil]; } [APService setupWithOption:launchOptions]; return YES; }
此处的userInfo就是推送来的消息 打印出来的格式为字典 可以根据字典传来的信息进行页面跳转
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void(^)(UIBackgroundFetchResult))completionHandler { // IOS 7 Support Required if (application.applicationState == UIApplicationStateActive) { //程序处于前台 NSLog(@"active"); //把icon上的小图标设置为0 [application setApplicationIconBadgeNumber:0]; } NSLog(@"userInfo %@",userInfo); [APService handleRemoteNotification:userInfo]; completionHandler(UIBackgroundFetchResultNewData); }
//获取DeviceToken成功 - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{ // Required [APService registerDeviceToken:deviceToken]; }