资源位SDK最低兼容iOS 8.0 系统。
电商demo集成运营SDK参考代码:https://github.com/growingio/GIOiOSDemo
资源位SDK主要提供两种接入方式:
集成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对应的唯一标识,在资源位Banner的web页面上配置获取,属于必填项
frame:Banner视图的位置尺寸
placeholderImage:Banner视图中单个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的跳转参数
/**
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;
异常错误码