美文网首页推送、统计、短信App证书制作与上架
制作远程推送证书以及用极光进行远程推送教程

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

作者: e16fb2d7b631 | 来源:发表于2016-07-05 11:07 被阅读270次

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

    远程推送

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

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

    首先进入苹果开发者中心

    点击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值)];

    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);

    }

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

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

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

    然后你就能收到推送了

    然后你就能收到推送了

    相关文章

      网友评论

        本文标题:制作远程推送证书以及用极光进行远程推送教程

        本文链接:https://www.haomeiwen.com/subject/juyhjttx.html