• iOS 极光推送


    1.关于推送的几个证书。http://www.mobile-open.com/2016/931624.html
    (1)创建 App ID,如果 ID 已经存在可以直接跳过此步骤。
              
    为 App 开启 Push Notification 功能。如果是已经创建的 App ID 也可以通过设置开启 Push Notification 功能。
    根据实际情况完善 App ID 信息并提交,注意此处需要指定具体的 Bundle ID 不要使用通配符。
     
    (2)新建证书需要注意选择证书种类(开发证书用于开发和调试使用,生产证书用于 App Store 发布)
    点击 Continue 后选择证书对应的应用ID,然后继续会出现“About Creating a Certificate Signing Request (CSR)”。
    根据它的说明创建打开KeychainAccess 创建 Certificate Signing Request
     
    继续返回Apple developer 网站点击 Continue ,上传刚刚生成的 .certSigningRequest 文件生成 APNs Push Certificate。
    下载并双击打开证书,证书打开时会启动“钥匙串访问”工具。
    右击刚刚生成的证书,导出p12文件(一共有2个P12文件,导出步骤一样的)。注意:
    导出证书时要选中证书文件,不要展开private key
     

     
    (3)Provisioning Profile的创建
              创建Provisioning Profile的前提,已在Apple Developer网站创建待发布应用所使用的Bundle ID的App ID,且为该App ID创建了APNs证书,如下图:
    在苹果开发者账号的Provisioning Profile页面点击下图按钮,创建Provisioning Profile
    双击下载下来的Provisioning Profile,添加到xcode。
    到此为止,证书创建完成。
     
    1.进入极光的官网,注册,登录,并新建一个应用:https://www.jiguang.cn/
    到这里应用创建完成。
     
     
    (4)配置项目:
     
    (1)允许Xcode7支持Http传输方法
    如果您使用的是2.1.9以后的版本则不需要配置此步骤
    如果用的是Xcode7或更新版本,需要在App项目的plist手动配置下key和值以支持http传输。

    全局配置

      <key>NSAppTransportSecurity</key> 
      <dict> 
        <key>NSAllowsArbitraryLoads</key> 
        <true/> 
      </dict
     
    (2)配置证书和开启后台推送
     

     开启Remote notifications,需要在Xcode 中修改应用的 Capabilities 开启Remote notifications

    3.SDK集成步骤(参照官方文档:http://docs.jiguang.cn/jpush/client/iOS/ios_guide_new/)

    下面便是代码部分

    在Appdelegate.m中导入头文件#import “JPUSHService.h”

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

     1 // Required
     2 if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {
     3     //可以添加自定义categories
     4     [JPUSHService registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge |UIUserNotificationTypeSound |UIUserNotificationTypeAlert)categories:nil];
     5 } else {
     6     //categories 必须为nil
     7     [JPUSHService registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |UIRemoteNotificationTypeSound |UIRemoteNotificationTypeAlert)categories:nil];
     8 }
     9 
    10 [JPUSHService setupWithOption:launchOptions appKey:你的appKey(字符串),在极光的应用详情中可以看到" channel:@""(这个不填就行) apsForProduction:这个值生产环境为YES,开发环境为NO(BOOL值)];
    11 
    12  
    13 
    14 创建
    15 
    16 -(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
    17 
    18 
    19 方法中注册设备(去掉这个)
    20 
    21 - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    22     //这个方法是设置别名和tag 可省
    23     // [JPUSHService setTags:nil alias:@"WzxJiang" fetchCompletionHandle:^(int iResCode, NSSet *iTags, NSString *iAlias) {
    24     //        NSLog(@"rescode: %d, 
    tags: %@, 
    alias: %@
    ", iResCode, iTags , iAlias);
    25     //   }];
    26     // Required
    27     [JPUSHService registerDeviceToken:deviceToken];
    28 }
    29 
    30  
    31 
    32 创建
    33 
    34 - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler:
    35 
    36 
    37 App在后台时收到推送时的处理
    38 
    39 - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
    40     //iOS 7及之后才能用,现在没人适配iOS6了吧...
    41     // IOS 7 Support Required 
    42     [JPUSHService handleRemoteNotification:userInfo];
    43     completionHandler(UIBackgroundFetchResultNewData);
    44 }
    45 
    46  
    47 
    48 在applicationWillEnterForeground方法(App即将进入前台)中将小红点清除
    49 
    50 - (void)applicationWillEnterForeground:(UIApplication *)application {
    51     NSLog(@"进入前台");
    52     [UIApplication sharedApplication].applicationIconBadgeNumber = 0;
    53 }
    54 
    56 
    57 创建
    58 
    59 didFailToRegisterForRemoteNotificationsWithError
    60 
    61 
    62 方法,处理接收推送错误的情况(一般不会…)
    63 - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
    64     //Optional
    65     NSLog(@"did Fail To Register For Remote Notifications With Error: %@", error);
    66 }
    4.测试推送结果:
     
     
    注意要在真机上运行,如果能够收到自己推送的消息,极光的集成就算完成了。
     
    1.问题:
     
    解决:
    双击证书:
     
     
     
    2.应用在前台的时候是收不到消息,也没有小红点提示的,应用在后台或者杀死的情况下是可以正常接收到消息的。
    据说在iOS 10之后是没有这个问题了,不过目前由于项目问题还没有进行ios10的适配,希望能够解决这个问题吧,对于集成极光推送有问题的小伙伴可以提出来一起讨论,共同进步。
    
    
  • 相关阅读:
    PHP将unicode转utf8最简法
    【搬运】systemctl 命令完全指南
    【转】Linux下apache/httpd服务启动与停止
    【转】Apache Digest验证
    Apache安装及配置ssl
    PHP获取某个表与其他表的关联关系算法
    Mysql查看版本,端口命令
    解决Windows下网络原因Composer安装失败问题
    kafka总结
    关于自增加
  • 原文地址:https://www.cnblogs.com/somethingWithiOS/p/5941295.html
Copyright © 2020-2023  润新知