您的位置:首页 > 其它

史上全详细制作远程推送证书以及用极光进行远程推送教程

2016-03-21 15:46 441 查看
网上下载推送证书的教程一般都是几年前的,现在下载推送证书很简单

首先进入苹果开发者中心
点击Member Center



Member Center

登录后点击Certificates,Identifiers & Profiles



Certificates,Identifiers & Profiles

任意点击一个



创建App ID



创建App ID

App ID的名字可以随便取,Bundle ID一定要注意,要推送的App项目中的Bundle ID一定要是这个Bundle ID



App ID的名字可以随便取,Bundle ID一定要注意,要推送的App项目中的Bundle ID一定要是这个Bundle ID

App Services可以现在勾上Push Notifications,也可以后面再改,然后点继续



App Services可以现在勾上Push Notifications,也可以后面再改

提交(我之前勾选了Push Notifications,所有它现在是橙色的,不然应该是灰色)



提交(我之前勾选了Push Notifications,所有它现在是橙色的,不然应该是灰色)

出来后点击你刚创建的App ID,然后点Edit



点击你刚创建的App ID



点Edit

创建开发环境和生产环境的证书



创建开发环境和生产环境的证书

这里讲一下什么是开发环境和生产环境:

你用Xcode编译安装的就是开发环境,用二维码或者App Store下载的就是生产环境.

这里点继续后会发现需要你上传一个证书



需要你上传一个证书

现在我们来制作这个证书

打开MAC自带的钥匙串访问(Launchpad->其他->钥匙串访问)
点开后左上角打开证书助手,从证书颁发机构请求证书



左上角打开证书助手,从证书颁发机构请求证书

注意一定要存储到磁盘



注意一定要存储到磁盘

然后存储就行了,存在哪都可以

把刚才存储的证书上传了



把刚才存储的证书上传了

下载下来,点击Done,又回跳回到开始的界面,然后还是选择你创建的App ID然后Edit,开发环境和生产环境推送证书的创建流程是一样的,自己按着步骤就能把证书全部创建并下载成功.



下载下来

这时候Push Notifications应该是绿的了



这时候Push Notifications应该是绿的了

打开钥匙串访问,你会发现你多了这两个证书



打开钥匙串访问,你会发现你多了这两个证书

右键分别导出它们



右键分别导出它们

设置密码



设置密码

导出成功后,你就能看到它们了,记得命好名(最好用英文)

推送证书的制作到这就结束了,下面讲怎么使用极光推送进行远程推送

怎么使用极光推送进行远程推送

极光官网注册极光推送
创建一个应用

在应用配置中导入两个证书(我这是已经验证了的,不然就是让你上传证书的按钮)

Bundle ID是导入证书后自动出现的,证书最好一个一个上传不然可能会出现验证失败的问题.



导入两个证书

然后下载SDK

把SDK中的Lib文件夹导入你的项目中,记得勾选Copy



记得勾选Copy

在Build Phases中导入以下库



在Build Phases中导入以下库

修改Capabilities

打开远程推送



打开远程推送

打开Background Modes



打开Background Modes

修改Bundle ID 以及选择Team



修改Bundle ID 以及选择Team

下面便是代码部分

Appdelegate.m
中导入头文件

#import "JPUSHService.h"


didFinishLaunchingWithOptions
方法中写入以下代码,有的地方要按你自己的信息填

// Required
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:你的appKey(字符串),在极光的应用详情中可以看到" channel:@""(这个不填就行) apsForProduction:这个值生产环境为YES,开发环境为NO(BOOL值)];


创建
-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
方法中注册设备
\(去掉这个\)- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
//这个方法是设置别名和tag 可省
// [JPUSHService setTags:nil alias:@"WzxJiang" fetchCompletionHandle:^(int iResCode, NSSet *iTags, NSString *iAlias) {
//        NSLog(@"rescode: %d, \ntags: %@, \nalias: %@\n", iResCode, iTags , iAlias);
//   }];
// Required
[JPUSHService registerDeviceToken:deviceToken];
}


创建
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
:App在后台时收到推送时的处理
\(去掉这个\)- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
//iOS 7及之后才能用,现在没人适配iOS6了吧...
// IOS 7 Support Required
[JPUSHService handleRemoteNotification:userInfo];
completionHandler(UIBackgroundFetchResultNewData);
}


applicationWillEnterForeground
方法(App即将进入前台)中将小红点清除
\(去掉这个\)- (void)applicationWillEnterForeground:(UIApplication *)application {
NSLog(@"进入前台");
[UIApplication sharedApplication].applicationIconBadgeNumber = 0;
}


创建
didFailToRegisterForRemoteNotificationsWithError
方法,处理接收推送错误的情况(一般不会...)
\(去掉这个\)- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
//Optional
NSLog(@"did Fail To Register For Remote Notifications With Error: %@", error);
}


代码都已经弄好了,现在推送以下,(注意只能是真机调试)

在极光上点击发送通知,注意是开发环境



点击发送通知,注意是开发环境

然后你就能收到推送了



然后你就能收到推送了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: