概述
个推推送是一个端到端的推送服务,使得服务器端消息能够及时地推送到终端用户手机上,让开发者积极地保持与用户的连接,从而提高用户活跃度、提高应用的留存率。
我们提供了一个SDK开发工具包,包含了iOS SDK的全部所需资源,解压缩后的文件目录结构如图:
其中dist目录包含集成SDK所需的静态库和头文件。
注意libGeTuiSdk-{version}.a (version为具体的sdk版本号)使用libo工具将支持i386、arm64、armv7和armv7s的代码打包到了一起,所以这个库将同时支持simulator和device。
项目设置
1. 将dist目录拷贝到项目工程目录下
导入dist/include/所有的头文件、libGeTuiSdk-{version}.a文件和几个系统库到XCode项目中。
2. 添加头文件搜索目录
3. 添加依赖库 (必须,如下图)
系统库支持:
ibz.dylib
libsqlite3.dylib
Security.framework
SystemConfiguration.framework
CFNetwork.framework
CoreTelephony.framework
CoreLocation.framework
AVFoundation.framework
4. SDK后台运行权限设置
4.1 Background Fetch 权限:(必选)
为了更好支持SDK 推送,APP定期抓取离线数据, 添加Background Fetch 功能。
添加background Fetch 权限:
4.2 Audio and AirPlay 权限:(可选)
Audio and AirPlay 权限开启,可以保证SDK后台长时间运行,保证消息实时到达。开发者后台发送透传消息将直接通过GeTuiSdkDidReceivePayload接口送达。
(注:该功能视APP应用具体功能而定,如果App不支持后台多媒体播放,请不要勾选,勾选将有概率通不过AppStore审核!)
5. SDK地理围栏功能:(可选)
描述:本功能为使用个推2.0智能标签和个推3.0应景推送的必选功能,建议勾选此功能。
5.1 GPS 定位权限设置(可选)
为了适配IOS8及以上系统: Info.plist 中需要添加 NSLocationWhenInUseUsageDescription 或者 NSLocationAlwaysUsageDescription key。
NSLocationWhenInUseUsageDescription 允许App前台获取GPS信息
NSLocationAlwaysUsageDescription 允许App前/后台获取GPS信息
其中NSLocationAlwaysUsageDescription 或者 NSLocationWhenInUseUsageDescription key对应的描述将会出现在请求窗口中,如果不需要描述可以设置value为空。
接入流程
1. AppDelegate中启动个推SDK
在AppDelegate 中 didFinishLaunchingWithOptions 方法中,通过平台分配的APPID/APPKEY/APPSECRENT 启动个推SDK,并完成注册APNS通知和处理启动时拿到的APNS透传数据。
代码示例
2. 启动SDK ,并设置后台开关和电子围栏开关
3. 当应用进入后台时通知个推SDK进入后台
注:原先stopSDK接口。
4. 向服务器注册DeviceToken
为 GeTui Server 上报 DeviceToken,免除开发者管理 DeviceToken 的麻烦。并可通过个推开发者平台推送APN消息。
如果获取DeviceToken获取失败,也需要通知个推服务器。
5. Background Fetch 接口回调
IOS7.0以后支持APP后台刷新数据,会回调performFetchWithCompletionHandler接口,此处为保证个推数据刷新需调用 [GeTuiSdk resumeBackgroundClient] 接口恢复个推SDK 运行刷新数据。
6. 个推SDK支持用户设置标签
个推SDK支持用户设置标签,标示一组标签用户,可以针对标签用户进行推送。
接口:+ (BOOL)setTags:(NSArray *)tags;
7. 个推SDK支持绑定别名功能
个推SDK支持绑定别名功能,对用户设置别名,可以针对具体别名进行推送。
接口: + (void)bindAlias:(NSString *)alias; //绑定别名
接口: + (void)unbindAlias:(NSString *)alias; //解绑别名
8. 设置SDK Delegate 回调,实现GeTuiSdkDelegate各个接口方法
8.1 SDK启动成功返回CID
接口:- (void) GeTuiSdkDidRegisterClient:(NSString *)clientId;
8.2 SDK收到透传消息回调
接口:-(void)GeTuiSdkDidReceivePayload:(NSString*)payloadId andTaskId:(NSString*) taskId andMessageId:(NSString*)aMsgId fromApplication:(NSString *)appId;
8.3 SDK收到sendMessage消息回调
接口:- (void) GeTuiSdkDidSendMessage:(NSString *)messageId result:(int)result;
8.4 SDK遇到错误回调
接口:- (void) GeTuiSdkDidOccurError:(NSError *)error;
8.5 SDK运行状态通知
状态类型 :SdkStatusStarting // 正在启动
SdkStatusStarted // 启动
SdkStatusStoped // 停止接口:- (void) GeTuiSDkDidNotifySdkState:(SdkStatus)aStatus;
sd iOS推送流程
iOS应用&Server&getui SDK&getui Server和Apple Push Notification Server的交互过程,如下图