文档章节

个推SDK集成

Zimbee
 Zimbee
发布于 2015/04/30 02:45
字数 2550
阅读 80
收藏 0

iOS SDK开发准备

由于iOS系统限制,在后台的应用将无法维持长连接。个推服务器发送消息给离线用户时,会利用苹果推送系统发送APNS 到用户设备上,所以需要应用配合提交APS证书和DeviceToken。

1. 运行环境

iOS 4.0+
GPRS、3G或Wi-Fi等网络
手机可以没有SIM卡,但是可能导致部分功能缺失 Apple应用ID和对应推送证书(APNS证书,请参照附录1:创建Apple应用并创建APNS推送证书)

2. 创建Apple应用ID和APNS推送证书个推需要通过APNS来唤醒您的应用,所以需要对应app的推送证书。如果对获取推送证书有疑问,请参照附录:

创建Apple应用并创建APNS推送证书

3. 注册账号并登记应用(必须)

[1] 访问个推开放平台(http://dev.igetui.com),点击“立即注册”注册个推账户 [2] 按要求填入用户名、邮箱等基本信息,注册并激活账户

[3] 登录个推平台,按照提示登记应用,输入应用相关信息,上传iOS应用证书,点击“保存”创建您的应用。记录生成应用的AppKey/AppID/AppSecret信息(详看常见名词介绍),后续客户端集成过程中需要用到

4. 获取SDK开发工具包(必须)

5. 了解个推推送服务框架


说明:
l UID:
第三方应用标识用户身份的ID。
l ClientID(CID):
个推SDK标识用户身份的ID。
l payload: 第三方应用通过个推发送给客户端的透传信息,由第三方应用负责解析具体动作,个推只负责传输。

iOS SDK集成步骤

概述
1. 项目设置
2. Link to the SDK
3. iOS应用&Server&getui SDK&getui Server和Apple Push Notification Server的交互过程

概述

我们提供的一个SDK开发工具包,包含了iOS SDK的全部所需资源,解压缩后的文件目录结构如图:

其中dist目录包含集成SDK所需的静态库和头文件。

注意: libGexinSdk-{version}.a(version为具体的sdk版本号)使用libo工具将支持i386、armv6、armv7和armv7s的代码打包到了一起,所以这个库将同时支持simu

1. 项目设置

导入dist/include/所有的头文件、libGexinSdk-{version}.a文件和几个系统库到XCode项目中就可以开始code了。 将dist目录拷贝到项目工程目录下

添加头文件搜索目录

添加库文件

个推SDK依赖几个额外的系统库支持,还需要导入以下5个库:

libz.dylib
libsqlite3.dylib Security.framework SystemConfiguration.framework CFNetwork.framework

2. Link to the SDK

要使用个推的推送服务需要创建一个GexinSdk的对象,由这个对象来和个推服务器完成必要交互。

创建GexinSdk对象需要提供GexinSdkDelegate的observer来接收推送的回调消息。 除了接收个推的推送消息,个推还使用APNS来唤醒应用,如果需要处理APNS消息,请参考Demo工程 个推SDK还支持发送消息到服务器(具体参考SDK reference),这点是APNS不具备的功能。 最后个推还可以对client打标签(Tag),请参考SDK reference。 具体的集成过程请看demo/bld/Demo.xcodeproj工程。

备注:demo/bld/StartApp.xcodeproj是用来演示通过个推启动其它应用的。StartApp注册Url sharedApplication] openURL:aUrl];打开。

API:iOS
本文档介绍了iOS SDK API的基本说明和使用方法,如有更多疑问,请联系我们

设置处理显示的AlertView是否随屏幕旋转 | 创建个推SDK的对象 | 根据payloadId接收推送消息 提交APNS注册后返回的deviceToken | 设置用户标签 | 从客户端发送上行消息到应用服务器 关闭通道并清理资源 | SDK注册成功通知 | SDK通知收到个推推送消息 SDK通知发送上行消息结果 | SDK通知发送错误 | 错误状态定义 获取用户的ClientID | 绑定用户别名(iOS) | 解绑用户别名(iOS)

设置处理显示的AlertView是否随屏幕旋转

setAllowedRotateUiOrientations

当推送弹框消息,SDK会根据这个来设置处理显示的AlertView是否随屏幕旋转。 +(void)setAllowedRotateUiOrientations:(NSArray *)orientations;

参数
orientations:支持的屏幕方向列表,具体值请参照UIInterfaceOrientation(From iOS SDK)
说明 设置为与您的应用中shouldAutorotateToInterfaceOrientation中相同的参数,这样不会因为推送消息弹框导致您的UI意外旋转到不希望的模式。 头文件
GexinSdk.h
注意:如果不关心UI方向,不要调用这个方法。

下一个

创建个推SDK的对象

createSdkWithAppId:appKey:appSecret:appVersion:delegate:error

创建个推SDK的对象
+ (GexinSdk *)createSdkWithAppId:(NSString *)appid
appKey:(NSString *)appKey
appSecret:(NSString *)appSecret
appVersion:(NSString *)aAppVersion
delegate:(id<GexinSdkDelegate>)delegate
error:(NSError **)error;
参数
appid:个推登记应用的appid
appKey:个推登记应用的appKey
appSecret:个推登记应用的appSecret
delegate:推送消息回调接口
error:错误消息,保留参数
说明 appid、appKey和appSecret必须正确,否则会导致推送消息无法接收。目前无法在error参数中告知这类错误信息。 请不用用同一个appid创建多个对象。
头文件
GexinSdk.h

上一个 下一个

根据payloadId接收推送消息

retrivePayloadById
- (NSData *)retrivePayloadById:(NSString *)payloadId;

参数 payloadId:接收的推送消息的id,如果id不正确,将无法取到消息内容。 返回值
无法取到消息内容,返回nil。
说明 SDK仅保持5天内的消息,请及时获取。已获取的消息无法再次获取。 头文件
GexinSdk.h

上一个 下一个

提交APNS注册后返回的devicetoken

registerDeviceToken

提交APNS注册后返回的deviceToken。
- (void)registerDeviceToken:(NSString *)deviceToken;
参数
deviceToken:APNS返回的client标识。
说明
个推服务需要使用APNS来辅助推送消息,如果不提交deviceToken,会导致推送功能不正常。 请在收到
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken 后将deviceToken字符取出后调用这个接口提交deviceToken。具体实现请参考Demo工程。 如果注册APNS失败导致无法获取deviceToken,仍然需要上传空的deviceToken,个推服务器在应用离线的时候将不会发送APNS。 头文件
GexinSdk.h

上一个 下一个

设置用户标签

setTags

给用户打标签
- (BOOL)setTags:(NSArray *)tags;
参数 tags:NSString的对象数组,不能为nil。只能包含中文字符、英文字母、0-9、空格、+-*.的组合。 返回值
如果tags参数不合法,返回NO。

说明
给用户打标签,可以在个推后端根据标签内容做差异化推送。具体请询问技术支持。 会覆盖上一次的调用结果。 头文件
GexinSdk.h

上一个 下一个

从客户端发送上行消息到应用服务器

sendMessage:error

客户端发送上行消息到应用服务器。
- (NSString *)sendMessage:(NSData *)body error:(NSError **)error; 参数
body:二进制消息内容
error:保留
返回值
消息id,如果发送前验证失败返回nil;
说明 请不要数据量发送过大消息。不要过于频繁发送消息,否则消息可能丢失。 头文件
GexinSdk.h

上一个 下一个

关闭通道并清理资源

destroy

关闭通道并清理资源。用于在开启ARC的项目中替换release调用。 - (void)destroy;
参数

返回值

头文件 GexinSdk.h

上一个 下一个

SDK注册成功通知

GexinSdkDidRegisterClient

SDK注册成功通知。
- (void)GexinSdkDidRegisterClient:(NSString *)clientId;
参数
clientId:标识用户的clientId
说明
创建GexinSdk对象后,SDK会自动向个推服务器注册SDK,当成功注册时,SDK通知应用注册成功。 注意:注册成功仅表示推送通道建立,如果appid/appkey/appSecret等验证不通过,依然无法接收到推送消息,请确保验证信息正确

上一个 下一个

SDK通知收到个推推送消息

GexinSdkDidReceivePayload:fromApplication

SDK通知收到个推推送消息。
- (void)GexinSdkDidReceivePayload:(NSString *)payloadId fromApplication:(NSString *)appId;
参数
payloadId:代表推送消息的唯一id
appId:应用的appId
说明
SDK会将推送消息在本地数据库中保留5天,请及时取出(See retrivePayloadById:),取出后消息将被删除。

上一个 下一个

SDK通知发送上行消息结果

GexinSdkDidSendMessage:result

SDK通知发送上行消息结果。See Also:sendMessage:error:
- (void)GexinSdkDidSendMessage:(NSString *)messageId result:(int)result; 参数
messageId:sendMessage:error:返回的id
result:成功返回0

上一个 下一个

SDK通知发送错误GexinSdkDidOccurError

SDK通知发送错误。集成SDK时用来告知使用SDK的错误。- (void)GexinSdkDidOccurError:(NSError *)error;
参数
error:错误

上一个 下一个

错误状态定义GXErrorNO

说明

上一个 下一个

获取用户的ClientID

clientId

说明
- (NSString *)clientId;
参数
无。
返回值
返回当前用户的ClientID
说明 当前用户的ClientID,如果ClientID不存在,返回null 头文件
GexinSdk.h
上一个 下一个

绑定用户别名(iOS)bindAlias

typedef enum {
    GXSdkRegisterFailed = -1000,
    GXSdkBindAppIDFailed,
    GXSdkFeedbackFailed,

} GXSdkErrorNO;

GXSdkRegisterFailed 注册失败 GXSdkBindAppIDFailed Deprecated GXSdkFeedbackFailed Feedback失败

- (void)bindAlias:(NSString *)alias;
参数 alias:别名名称:长度40字节,支持中、英文(区分大小写)、数字以及下划线。 说明

1、同一个别名最多绑定10个ClientID(适用于允许多设备同时登陆的应用),当已绑定10个ClientID时,再次调用此接口会自动解绑最早绑定的记录; 2、当ClientID已绑定了别名A,若调用此接口绑定别名B,则与别名A的绑定关系会自动解除; 3、此接口与unBindAlias一天内最多调用100次,两次调用的间隔需大于5s;

头文件
GexinSdk.h
上一个 下一个

解绑用户别名(iOS)

unbindAlias

- (void)unbindAlias:(NSString *)alias;
参数 alias:别名名称:长度40字节,支持中、英文(区分大小写)、数字以及下划线。 说明

1、此接口与bindAlias一天内最多调用100次,两次调用的间隔需大于5s;

2、只能解绑当前手机ClientID与别名的关系,不能解绑其他手机上ClientID与别名的关系; 头文件

GexinSdk.h

上一个






© 著作权归作者所有

Zimbee
粉丝 0
博文 14
码字总数 8304
作品 0
广州
私信 提问
个推用户画像产品(个像)Android集成实践

我们团队之前一直是个推推送的忠实用户,近期个推新推出了产品“个像·用户画像”,刚好非常契合我们的业务需求,于是我们也试用了一下。总的来说效果还不错,这篇文章就为大家介绍一下如何从...

个推
2018/08/07
0
0
个推用户画像产品(个像)Android集成实践

我们团队之前一直是个推推送的忠实用户,近期个推新推出了产品“个像·用户画像”,刚好非常契合我们的业务需求,于是我们也试用了一下。总的来说效果还不错,这篇文章就为大家介绍一下如何从...

个推
2018/08/07
0
0
个推用户画像产品 (个像) Android 集成实践

我们团队之前一直是个推推送的忠实用户,近期个推新推出了产品“个像·用户画像”,刚好非常契合我们的业务需求,于是我们也试用了一下。总的来说效果还不错,这篇文章就为大家介绍一下如何从...

个推
2018/08/08
0
0
视频云SDK iOS持续集成项目实践

1. 前言2016年, 我们维护的 iOS推流播放融合SDK KSYLive_iOS 在github上发布了40多个版本, 平均两周发布一个新版本,经历了最初痛苦的全手动版本构建和维护, 到后来慢慢搭建起来的持续集成系统...

敏哥侃视界
2017/12/28
0
0
个推数据统计产品(个数)iOS集成实践

最近业务方给我们部门提了新的需求,希望能一站式统计APP的几项重要数据。这次我们尝试使用的是个推(之前专门做消息推送的)旗下新推出的产品“个数·应用统计”,根据官方的说法,个推的数...

个推
2018/07/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Jenkins系列_插件安装及报错处理

进入Jenkins之后我们可以进行插件的安装,插件管理位于以下模块: 发现上面报了一堆错误,是因为插件的依赖没有安装好,那么这一节,就先把这些错误解决掉吧。解决完成后,也就基本会使用插件...

shzwork
今天
2
0
mysql mysql的所有查询语句和聚合函数(整理一下,忘记了可以随时看看)

查询所有字段 select * from 表名; 查询自定字段 select 字段名 from 表名; 查询指定数据 select * from 表名 where 条件; 带关键字IN的查询 select * from 表名 where 条件 [not] in(元素...

edison_kwok
昨天
9
0
多线程同时加载缓存实现

import com.google.common.cache.Cache;import com.google.common.cache.CacheBuilder;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorServi......

暗中观察
昨天
3
0
利用VisualVM 内存查看

准备工作,建几个测试类。等下就是要查看这几个类里面的属性 package visualvm;public class MultiObject { private String str; private int i; MultiObject(String str...

冷基
昨天
2
0
组装一台工作游戏两用机

一、配置清单如下: 分类 项目 价格(元) 主板 华硕(ASUS)TUF Z370-PLUS GAMING II 电竞特工 Z370二代 支持9代CPU 1049 CPU 英特尔(Intel) i7 8700K 酷睿六核 盒装CPU处理器 2640 风扇 九...

mbzhong
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部