要做极光推送项目,从0开始接触,集成到使用。
一、准备工作
前提:要有付费的苹果开发者账号,不然搞不了。
CSR文件:是用于换取证书的公钥文件,导出CSR这个过程其实就是电脑向证书机构申请凭证的过程。证书是你用电脑制作的并且颁发给你的电脑的。但是这台电脑是否具有制作证书的能力,就是要这个CSR文件来凭证
如何制作:
点击Finder,前往,实用工具,里面有一个钥匙串访问。打开
接下来随便输入邮箱,但是第二个选项要注意,保存到磁盘。
默认文件名是CertificateSigningRequest.certSigningRequest
二、开始制作——>开发证书,这是第一个证书
1.登录苹果开发者后台
https://developer.apple.com
2.
3.选择第一个,制作开发证书
4.点击下一步,傻瓜式操作,有一步是上传CSR文件的。就是准备工作中制作好的。
5.完成后就会显示
IOS Development 是开发证书的,只能配置两个。然后再点击添加的时候,就发现选不了,是灰色。
6.导出p12文件。这是个极光推送后台需要的。
下载刚才做的证书,双击安装。
就会在钥匙串中打开。
遇到的问题:右键点击开发证书,发现导出不了p12文件,是灰色的。
这里要注意,默认证书安装,是在系统的目录下,登录的目录下是没有的,需要手动复制证书,然后粘贴进登录目录下。
然后右键选择导出。对话框中选择p12文件格式,最后会提示你设置p12密码,随便设置,我是写了111111.
到此开发证书就制作完了。
三、开始制作——>开发环境下的推送证书,这是第二个证书
development英文翻译,开发,专业术语开发证书。有两种类型。第二个是开发环境下的推送证书。
然后点击继续,上传CSR文件,最后就制作完成了开发环境的推送证书。
下载保存,默认文件名aps_development.cer
双击安装,默认会安装在系统目录下,然后复制,粘贴到登录目录下,右键导出p12文件。
#四、开始制作——>发布环境下的推送证书,这是第三个证书。
Production,英文翻译生产,产品。专业术语就是生产证书,我更愿意叫产品证书。
步骤和上面类似。下载默认文件名aps.cer
五、配置极光推送
1.极光官网注册应用,分别上传前面生产的两个推送证书的p12文件
获得appkey
2.集成sdk
下载解压sdk包,拖动整个lib文件夹到自己的工程
接着导入上面的框架
3.配置xcode
也要开启上面的选项
4.编写代码
AppDelegate.m文件
```
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {
//可以添加自定义categories
[JPUSHService registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge |UIUserNotificationTypeSound |UIUserNotificationTypeAlert)categories:nil];
} else {
//categories 必须为nil
[JPUSHService registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |UIRemoteNotificationTypeSound |UIRemoteNotificationTypeAlert)categories:nil];
}
[JPUSHService setupWithOption:launchOptions appKey:@极光推送后台给的key
channel:@"" apsForProduction: NO];
return YES;
}
```
以下代码也是复制高手的,当测试了
```
- (void)applicationWillEnterForeground:(UIApplication *)application {
NSLog(@"进入前台");
// [UIApplication sharedApplication].applicationIconBadgeNumber = 0;
}
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
//iOS 7及之后才能用,现在没人适配iOS6了吧...
// IOS 7 Support Required
// [JPUSHService handleRemoteNotification:userInfo];
// completionHandler(UIBackgroundFetchResultNewData);
NSLog(@"%@",userInfo);//推送过来的内容也在这了
NSLog(@"后台收到推送");
}
//处理接收推送错误的情况(一般不会…)
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
//Optional
NSLog(@"did Fail To Register For Remote Notifications With Error: %@", error);
}
```
编译通过,极光推送从0开始到成功。