制作远程推送证书以及用极光进行远程推送教程

昨天公司项目要加入远程推送功能,自己做显然会很麻烦,所以用了极光的远程推送,下面我会讲如何制作推送证书并使用极光推送进行远程推送.

制作远程推送证书以及用极光进行远程推送教程_第1张图片

远程推送

先讲讲怎么下载推送证书吧(前面的很简单要是知道的可以直接往下滑,竟然不能页内跳转…)

网上下载推送证书的教程一般都是几年前的,现在下载推送证书很简单

首先进入苹果开发者中心

点击Member Center

制作远程推送证书以及用极光进行远程推送教程_第2张图片

Member Center

登录后点击Certificates,Identifiers & Profiles

制作远程推送证书以及用极光进行远程推送教程_第3张图片

Certificates,Identifiers & Profiles

任意点击一个

制作远程推送证书以及用极光进行远程推送教程_第4张图片

创建App ID

制作远程推送证书以及用极光进行远程推送教程_第5张图片

创建App ID

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

制作远程推送证书以及用极光进行远程推送教程_第6张图片

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

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

制作远程推送证书以及用极光进行远程推送教程_第7张图片

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

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

制作远程推送证书以及用极光进行远程推送教程_第8张图片

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

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

制作远程推送证书以及用极光进行远程推送教程_第9张图片

点击你刚创建的App ID

制作远程推送证书以及用极光进行远程推送教程_第10张图片

点Edit

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

制作远程推送证书以及用极光进行远程推送教程_第11张图片

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

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

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

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

制作远程推送证书以及用极光进行远程推送教程_第12张图片

需要你上传一个证书

现在我们来制作这个证书

打开MAC自带的钥匙串访问(Launchpad->其他->钥匙串访问)

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

制作远程推送证书以及用极光进行远程推送教程_第13张图片

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

注意一定要存储到磁盘

制作远程推送证书以及用极光进行远程推送教程_第14张图片

注意一定要存储到磁盘

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

把刚才存储的证书上传了

制作远程推送证书以及用极光进行远程推送教程_第15张图片

把刚才存储的证书上传了

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

制作远程推送证书以及用极光进行远程推送教程_第16张图片

下载下来

这时候Push Notifications应该是绿的了

制作远程推送证书以及用极光进行远程推送教程_第17张图片

这时候Push Notifications应该是绿的了

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

制作远程推送证书以及用极光进行远程推送教程_第18张图片

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

右键分别导出它们

制作远程推送证书以及用极光进行远程推送教程_第19张图片

右键分别导出它们

设置密码

制作远程推送证书以及用极光进行远程推送教程_第20张图片

设置密码

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

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

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

在极光官网注册极光推送

创建一个应用

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

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

制作远程推送证书以及用极光进行远程推送教程_第21张图片

导入两个证书

然后下载SDK

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

制作远程推送证书以及用极光进行远程推送教程_第22张图片

记得勾选Copy

在Build Phases中导入以下库

制作远程推送证书以及用极光进行远程推送教程_第23张图片

在Build Phases中导入以下库

修改Capabilities

打开远程推送

制作远程推送证书以及用极光进行远程推送教程_第24张图片

打开远程推送

打开Background Modes

制作远程推送证书以及用极光进行远程推送教程_第25张图片

打开Background Modes

修改Bundle ID 以及选择Team

制作远程推送证书以及用极光进行远程推送教程_第26张图片

修改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值)];

1

2

3

4

5

6

7

8

9

10// Required

if([[UIDevicecurrentDevice].systemVersionfloatValue]>=8.0){

//可以添加自定义categories

[JPUSHServiceregisterForRemoteNotificationTypes:(UIUserNotificationTypeBadge|UIUserNotificationTypeSound|UIUserNotificationTypeAlert)categories:nil];

}else{

//categories 必须为nil

[JPUSHServiceregisterForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeSound|UIRemoteNotificationTypeAlert)categories:nil];

}

[JPUSHServicesetupWithOption:launchOptionsappKey:你的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];

}

1

2

3

4

5

6

7

8(去掉这个)-(void)application:(UIApplication *)applicationdidRegisterForRemoteNotificationsWithDeviceToken:(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

[JPUSHServiceregisterDeviceToken: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);

}

1

2

3

4

5

6(去掉这个)-(void)application:(UIApplication *)applicationdidReceiveRemoteNotification:(NSDictionary *)userInfofetchCompletionHandler:(void(^)(UIBackgroundFetchResult))completionHandler{

//iOS 7及之后才能用,现在没人适配iOS6了吧...

// IOS 7 Support Required

[JPUSHServicehandleRemoteNotification:userInfo];

completionHandler(UIBackgroundFetchResultNewData);

}

在applicationWillEnterForeground方法(App即将进入前台)中将小红点清除

(去掉这个)- (void)applicationWillEnterForeground:(UIApplication *)application {

NSLog(@"进入前台");

[UIApplication sharedApplication].applicationIconBadgeNumber = 0;

}

1

2

3

4(去掉这个)-(void)applicationWillEnterForeground:(UIApplication *)application{

NSLog(@"进入前台");

[UIApplicationsharedApplication].applicationIconBadgeNumber=0;

}

创建didFailToRegisterForRemoteNotificationsWithError方法,处理接收推送错误的情况(一般不会…)

(去掉这个)- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {

//Optional

NSLog(@"did Fail To Register For Remote Notifications With Error: %@", error);

}

1

2

3

4(去掉这个)-(void)application:(UIApplication *)applicationdidFailToRegisterForRemoteNotificationsWithError:(NSError *)error{

//Optional

NSLog(@"did Fail To Register For Remote Notifications With Error: %@",error);

}

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

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

制作远程推送证书以及用极光进行远程推送教程_第27张图片

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

然后你就能收到推送了

制作远程推送证书以及用极光进行远程推送教程_第28张图片

然后你就能收到推送了

你可能感兴趣的:(制作远程推送证书以及用极光进行远程推送教程)