本人第一次在项目中集成极光推送,只是其中的一小部分功能,写此篇的主要目的是作为自己的笔记, 同时希望能给刚接触极光的同行一点点帮助。
一 首先我们要先集成极光的SDK
集成极光的SDK我自认为极光的iOS SDK集成指南比较详细,附链接如下
2、导入API开发包到应用程序项目, 客户端SDK下载地址如下JPush - 极光文档http://docs.jiguang.cn/resources/#ios-sdk
将SDK包解压,将解压后的lib子文件夹(包含JPUSHService.h、jpush-ios-x.x.x.a)添加到你的工程目录中。
3、必要的框架
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,请不要添加)
4.允许XCode7支持Http传输方法
如果用的是Xcode7时,需要在App项目的plist手动配置下key和值以支持http传输:选择1:根据域名配置在项目的info.plist中添加一个Key:NSAppTransportSecurity,类型为字典类型。然后给它添加一个NSExceptionDomains,类型为字典类型;把需要的支持的域添加給NSExceptionDomains。其中jpush.cn作为Key,类型为字典类型。每个域下面需要设置2个属性:NSIncludesSubdomains、NSExceptionAllowsInsecureHTTPLoads。 两个属性均为Boolean类型,值分别为YES、YES。如图:jpush_ios
选择方式2:全局配置NSAppTransportSecurityNSAllowsArbitraryLoads
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<dict/>
二:以下是在工程中实现
1.首先在桥接文件中引入"JPUSHService.h",OC就直接在AppDelegate中引入"JPUSHService.h"头文件
2.在AppDelegate中初始化 , 在application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool 的方法中完成判断版本 和 注册
3.注册
JPUSHService.setupWithOption(launchOptions, appKey: 你的APPKey, channel: nil, apsForProduction:true)
4.得到deviceToKen, 在AppDelegate的方法中
func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
//注册DeviceToken
JPUSHService.registerDeviceToken(deviceToken)
}
5.处理接收到的通知, 包括程序在前台运行和在后台运行时的判断及处理
6.点击icon后红色角标消失, 和通知栏的消息也消失
7.如果想要给个人发送通知就要设定标签(tags)和别名(alias)iOS SDK API - 极光文档
我是在登录成功后将每一个用户的id作为推送的标签和别名,因为每个id是每一个用户的标识, 注意tag的参数是个集合, 这样设定就可以做到当你登录成功后就可以给每个用户设定一个标签退送时根据用户的id就可以将通知发送给指定的用户