iOS 极光推送

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

iOS 极光推送

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

全局配置

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

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

iOS 极光推送

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

下面便是代码部分

在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 = ;
} 创建 didFailToRegisterForRemoteNotificationsWithError 方法,处理接收推送错误的情况(一般不会…)
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
//Optional
NSLog(@"did Fail To Register For Remote Notifications With Error: %@", error);
}
4.测试推送结果:
 
iOS 极光推送
iOS 极光推送
iOS 极光推送iOS 极光推送

iOS 极光推送iOS 极光推送

iOS 极光推送
注意要在真机上运行,如果能够收到自己推送的消息,极光的集成就算完成了。
 
1.问题:
 iOS 极光推送
iOS 极光推送
解决:
双击证书:
iOS 极光推送
iOS 极光推送
 iOS 极光推送
iOS 极光推送
 
iOS 极光推送
 iOS 极光推送
2.应用在前台的时候是收不到消息,也没有小红点提示的,应用在后台或者杀死的情况下是可以正常接收到消息的。
据说在iOS 10之后是没有这个问题了,不过目前由于项目问题还没有进行ios10的适配,希望能够解决这个问题吧,对于集成极光推送有问题的小伙伴可以提出来一起讨论,共同进步。

上一篇:抛弃强大的TFS ,借助于BugTracker.NET + Visual Source Safe + SourceLink搭建项目开发环境


下一篇:Java核心技术-具体的集合