iOS技术iOS开发超神学院iOS 开发每天分享优质文章

极光推送总结

2016-09-08  本文已影响101人  hx永恒之恋

1-证书申请

证书指南官方链接
http://docs.jiguang.cn/jpush/client/iOS/ios_cer_guide/

2-工程配置

导入SDK
将SDK包解压,在Xcode中选择“Add files to 'Your project name'...”,将解压后的lib子文件夹(包含JPUSHService.h、jpush-ios-x.x.x.a)添加到你的工程目录中。

添加Framework
    CFNetwork.framework
    CoreFoundation.framework
    CoreTelephony.framework
    SystemConfiguration.framework
    CoreGraphics.framework
    Foundation.framework
    UIKit.framework
    Security.framework
    Xcode7需要的是libz.tbd;Xcode7以下版本是libz.dylib
    Adsupport.framework (获取IDFA需要;如果不使用IDFA,请不要添加)
    UserNotifications.framework(Xcode8及以上)

Build Settings

如果你的工程需要支持小于7.0的iOS系统,请到Build Settings 关闭 bitCode 选项,否则将无法正常编译通过。

设置 Search Paths 下的 User Header Search Paths 和 Library Search Paths,比如SDK文件夹(默认为lib)与工程文件在同一级目录下,则都设置为"$(SRCROOT)/{静态库所在文件夹名称}"即可。

BABE5231-012B-4EE5-9E32-8EAF82BC3AE6.png

Capabilities

如使用Xcode8及以上环境开发,请开启Application Target的Capabilities->Push Notifications选项,如图:

capabilities_intro.jpg

允许Xcode7支持Http传输方法

如果您使用的是2.1.9以后的版本则不需要配置此步骤如果用的是Xcode7或更新版本,需要在App项目的plist手动配置下key和值以支持http传输:

选择1:根据域名配置
在项目的info.plist中添加一个Key:NSAppTransportSecurity,类型为字典类型。
然后给它添加一个NSExceptionDomains,类型为字典类型;
把需要的支持的域添加給NSExceptionDomains。其中jpush.cn作为Key,类型为字典类型。
每个域下面需要设置2个属性:NSIncludesSubdomains、NSExceptionAllowsInsecureHTTPLoads。两个属性均为Boolean类型,值分别为YES、YES。

ios_http.jpg
选择2:全局配置
<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSAllowsArbitraryLoads</key> 
    <true/> 
</dict>

初始化代码
在AppDelegate.m中导入#import "JPUSHService.h"
在以下方法中添加代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
#pragma mark --激光推送--
//    NSString *advertisingId = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
//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];
         }
         //Required
         // 如需继续使用pushConfig.plist文件声明appKey等配置内容,
         请依旧使用[JPUSHService setupWithOption:launchOptions]方式初始化。
         [JPUSHService setupWithOption:launchOptions appKey:@"appKey"
                      channel:nil
             apsForProduction:FALSE  // FALSE开发环境下的测试,YES为生产环境下的测试
        advertisingIdentifier:nil];
}

// 请在AppDelegate.m实现该回调方法并添加回调方法中的代码

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {

/// Required - 注册 DeviceToken
[JPUSHService registerDeviceToken:deviceToken];
}

通知

此时可前往极光控制台发送推送消息

![2710157B-1519-4842-8A4F-1D082004208A.png](http://upload-images.jianshu.io/upload_images/2323089-47f78f55155edafa.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

自定义消息

如果需要应用接收自定义消息,我们需要添加一个观察者。
(自定义消息是长连接需要应用在前台,如果应用在后台会保存为离线)
在以下方法中添加观察者

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

    NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter];
    [defaultCenter addObserver:self
                selector:@selector(networkDidReceiveMessage:)
                    name:kJPFNetworkDidReceiveMessageNotification
                  object:nil];
}

实现回调

- (void)networkDidReceiveMessage:(NSNotification *)notification {
     NSLog(@"did receive messagr %@",notification);
}
屏幕快照 2016-09-08 下午4.12.02.png

打印结果

屏幕快照 2016-09-08 下午4.16.47.png

自定义消息可以添加多个字段,添加完成后点击立即发送

屏幕快照 2016-09-08 下午4.19.22.png

打印结果

屏幕快照 2016-09-08 下午4.19.45.png

如有疑问查看官方教程
JPush iOS SDK 教程
链接: http://docs.jpush.io/client/ios_tutorials/

上一篇下一篇

猜你喜欢

热点阅读