iOS 极光推送

   昨天公司项目要加入极光推送功能,下面我会讲如何制作推送证书并使用极光推送进行远程推送.

先讲讲怎么下载推送证书吧(前面的很简单要是知道的可以直接往下滑)

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



登录后点击Certificates,Identifiers & Profiles


  • 任意点击一个
  


创建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);
    }

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

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

    点击发送通知,注意是开发环境
然后你就能收到推送了





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值