资源位 SDK(iOS)

资源位SDK最低兼容iOS 8.0 系统。

电商demo集成运营SDK参考代码:https://github.com/growingio/GIOiOSDemo

资源位SDK主要提供两种接入方式:

  • 原生模板

  • 自渲染(仅提供Banner数据)

集成SDK

1. 集成GrowingIO iOS埋点SDK(版本要求最低2.8.19)

详细集成步骤请参考 iOS 埋点 SDK 帮助文档

2. 选择运营bannerSDK集成方式

(1)使用CocoaPods快速集成

  • 添加pod 'GrowingTouch/GrowingTouchBannerKit'到对应项目的Podfile 中

target 'GIOEdemo' do
   pod 'GrowingTouch/GrowingTouchBannerKit'
end
  • 执行pod update,不要用 --no-repo-update选项

(2)手动集成SDK

3. 初始化SDK

在 AppDelegate 中导入 #import <GrowingTouchCoreKit/GrowingTouchCoreKit.h> 并添加初始化方法,且保证在埋点 SDK 初始化代码 [Growing startWithAccountId:@"xxxxxxxxxxxxxxxx"] 后

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    ...
    // 启动GrowingIO
    [Growing startWithAccountId:@"xxxxxxxxxxxxxxxx"]; //替换为您的项目ID
    
    // 启动GrowingTouch
    [GrowingTouch start];
}

请注意调用顺序,需要在 [Growing startWithAccountId] 函数调用后,再调用 [GrowingTouch start] 函数。

原生模板

生成Banner视图示例,并根据对应bannerKey填充Banner数据,视图的位置尺寸由用户定义。 bannerKey 来自网页生成

1. 初始化

导入对应的包#import "GrowingTouchCoreKit/GrowingTouchBannerView.h"

在需要的位置调用Banner视图的初始化方法,对应的API为

/**
 初始化方法
 
 @param frame 尺寸位置
 @param placeholderImage 占位图
 @return 返回初始化的实例
 */
+ (GrowingTouchBannerView *)bannerKey:(NSString*) bannerKey bannerFrame:(CGRect)frame placeholderImage:(UIImage *)placeholderImage;

其中:

bannerKey 为该Banner对应的唯一标识,在资源位Bannerweb页面上配置获取,属于必填项

frameBanner视图的位置尺寸

placeholderImageBanner视图中单个Item视图的占位图

2. 属性设置

Banner视图支持以下属性设置

// 示例代码
// 设置pageControl图片
self.bannerView.currentPageIndicatorImage = [UIImage imageNamed:@"page_select"];
self.bannerView.pageIndicatorImage = [UIImage imageNamed:@"page_unselect"];
self.bannerView.currentPageIndicatorSize = CGSizeMake(10,10);
self.bannerView.pageIndicatorSize = CGSizeMake(10,10);

//    self.bannerView.currentPageIndicatorTintColor = [UIColor redColor];
//    self.bannerView.pageIndicatorTintColor = [UIColor yellowColor];

3. 数据请求

生成Banner视图实例后,请求对应Banner视图数据API

/**
 加载数据

 @param delegate banner数据请求回调代理
 */
- (void)loadBannerWithDelegate:(id <GrowingTouchBannerViewDelegate>)delegate;

4. 方法回调

在数据请求中设置Banner数据请求代理后,可在代理中实现以下代理方法监听Banner数据请求状态与Banner的交互行为

/**
 banner 加载成功
 
 @param bannerView 对应的banner视图
 */
- (void)growingTouchBannerLoadSuccess:(GrowingTouchBannerView*) bannerView;

/**
 banner 加载失败
 
 @param bannerView 对应的banner视图
 @param error 失败error
 */
- (void)growingTouchBannerLoadFailed:(GrowingTouchBannerView*) bannerView error:(NSError *)error;

/**
 点击选中某一个banner视图,是否消费此次点击事件
 
 @param bannerView 对应的banner视图
 @param index banner 位置
 @param openUrl 跳转的链接
 @return 是否消费此次点击
 */
- (BOOL)growingTouchBanner:(*) bannerView didSelectAtIndex:(NSInteger)index openUrl:(NSString *)openUrl;

/**
 视图展示方法
 
 @param bannerView 对应的banner视图
 @param index banner 位置
 */
- (void)growingTouchBanner:(GrowingTouchBannerView*) bannerView didShowAtIndex:(NSInteger)index;

/**
 banner视图加载失败未展示的默认点击事件

 @param bannerView 对应的banner视图
 */
- (void)growingTouchBannerErrorImageClick:(GrowingTouchBannerView*) bannerView;

5. 点击跳转

Banner视图的代理方法中可决定指定位置的点击事件是否在SDK内部处理,对应的代理回调方法为

- (BOOL)growingTouchBanner:(GrowingTouchBannerView*) bannerView didSelectAtIndex:(NSInteger)index openUrl:(NSString *)openUrl;

默认Banner视图上的点击跳转逻辑全部在SDK内部处理,如果用户想要自行处理该点击事件,可在上述代理回调方法获取对应的openUrl自行实现点击跳转逻辑,同时返回YES禁止SDK内部自动处理该事件。

SDK内部处理的点击跳转逻辑可参考:弹窗和推送SDK集成

原生模板容错处理:

假如服务器出错, 会先取缓存里banner的数据,如果没有缓存,会加载用户配置的错误占位图bannerViewErrorImage,如果没有设置错误占位图,会显示空白,所以建议设置好错误占位图。 如果请求图片加载慢的话,可以设置默认占位图placeholderImage,作为中间过程显示的图片。 1.3.0版本支持灵活资源位,没有banner数据模版渲染自动隐藏,布局修改需要开发者自行处理。

整个资源位保存并上线后,重新启动app会马上刷新banner数据。 不重新启动会30分钟后更新

自渲染

仅提供Banner数据(调用API注意block的循环引用问题)

1. 数据请求

根据bannerKey获取对应的Banner数据

/**
 自渲染的初始化方法
 
 @param bannerKey banner的唯一标识
 @param bannerData 请求成功回调数据
 @param failure 请求失败消息
 */
+ (void)growingTouchBannerDataTaskBannerKey:(NSString*) bannerKey success:(void(^)(GrowingTouchBannerData *)) bannerData failure:(void(^)(NSError*))failure;

2. Banner数据模型

返回的Banner数据模型为

  • GrowingTouchBannerData:整个Banner数据模型

  • GrowingTouchBannerItem:Banner中单个Item的模型

3. 视图绑定

请在下面方法中进行自定义Banner单个视图与Item的绑定,单个视图的点击在completedBlock进行处理,openUrl为对应Item的跳转参数

itemView为Banner中的单个视图

/**
item 绑定视图
@param itemView item绑定的视图
@param completedBlock 绑定视图点击的回调
*/
- (void)bindItemDataToClickView:(UIView *)itemView selectCompleted:(void(^)(NSString *openUrl, NSError *error)) completedBlock;

旧的API(建议用上述新的API进行替换) bannerView为Banner中的单个视图

/**
 自渲染视图与Item的绑定,以及点击回调

 @param bannerKey banner的唯一标识
 @param bannerView item对应的视图
 @param item banner的单个数据item
 @param completedBlock 点击的回调,返回跳转参数
 */
+ (void)growingTouchBannerDataTaskBannerKey:(NSString*) bannerKey bannerView:(UIView *)bannerView bannerItem:(GrowingTouchBannerItem *)item selectCompleted:(void(^)(NSString *openUrl, NSError *error)) completedBlock;

异常错误码

Last updated