|
| 1 | +// |
| 2 | +// OpenInstallSDK.h |
| 3 | +// OpenInstallSDK |
| 4 | +// |
| 5 | +// Created by toby on 16/8/11. |
| 6 | +// Copyright © 2016年 toby. All rights reserved. |
| 7 | +// |
| 8 | + |
| 9 | +#import <Foundation/Foundation.h> |
| 10 | +#import "OpeninstallData.h" |
| 11 | + |
| 12 | +@protocol OpenInstallDelegate<NSObject> |
| 13 | + |
| 14 | +@optional |
| 15 | + |
| 16 | +#pragma mark - 推荐使用最新API:<code>getInstallParmsCompleted</code> |
| 17 | +/** |
| 18 | + * 安装时获取h5页面动态参数(如果是渠道链接,渠道编号会一起返回) |
| 19 | + * @param params 动态参数 |
| 20 | + * @param error 错误回调 |
| 21 | + * @discussion 老版本sdk升级过来可延用该api |
| 22 | + */ |
| 23 | +- (void)getInstallParamsFromOpenInstall:(nullable NSDictionary *)params withError:(nullable NSError *)error __deprecated_msg("Deprecated func,请使用方法<code>getInstallParmsCompleted</code>"); |
| 24 | + |
| 25 | + |
| 26 | +///---------------------- |
| 27 | +/// @name 一键拉起的回调方法 |
| 28 | +///---------------------- |
| 29 | + |
| 30 | +#pragma mark - 推荐使用最新API:<code>getWakeUpParams</code> |
| 31 | +/** |
| 32 | + * 唤醒时获取h5页面动态参数(如果是渠道链接,渠道编号会一起返回) |
| 33 | + * @param params 动态参数 |
| 34 | + * @param error 错误回调 |
| 35 | + * @discussion 老版本sdk升级过来可延用该api |
| 36 | + */ |
| 37 | +- (void)getWakeUpParamsFromOpenInstall:(nullable NSDictionary *)params withError:(nullable NSError *)error __deprecated_msg("Deprecated func,请使用方法<code>getWakeUpParams</code>"); |
| 38 | + |
| 39 | + |
| 40 | +#pragma mark - add in v2.2.0 |
| 41 | +/** |
| 42 | + * 唤醒时获取h5页面动态参数(如果是渠道链接,渠道编号会一起返回) |
| 43 | + * @param appData 动态参数对象 |
| 44 | + */ |
| 45 | +- (void)getWakeUpParams:(nullable OpeninstallData *)appData; |
| 46 | + |
| 47 | +@end |
| 48 | + |
| 49 | +@interface OpenInstallSDK : NSObject |
| 50 | + |
| 51 | +/** |
| 52 | + * 获取sdk当前版本号,add in v2.2.1 |
| 53 | + */ |
| 54 | ++ (NSString *_Nullable)sdkVersion; |
| 55 | + |
| 56 | + |
| 57 | +/** |
| 58 | + * SDK单例,returns a previously instantiated singleton instance of the API. |
| 59 | + */ |
| 60 | ++(instancetype _Nullable)defaultManager; |
| 61 | + |
| 62 | + |
| 63 | +///------------- |
| 64 | +/// @name 初始化 |
| 65 | +///------------- |
| 66 | + |
| 67 | +#pragma mark - added in v2.2.0 请在Info.plist中配置应用的appkey |
| 68 | + |
| 69 | +/** |
| 70 | + * 初始化OpenInstall SDK |
| 71 | + * ***调用该方法前,需在Info.plist文件中配置键值对,键为com.openinstall.APP_KEY不能修改,值为相应的应用的appKey,可在openinstall官方后台查看*** |
| 72 | + |
| 73 | + <key>com.openinstall.APP_KEY</key> |
| 74 | + <string>你的appKey</string> |
| 75 | + |
| 76 | + * @param delegate 委托方法所在的类的对象 |
| 77 | + */ |
| 78 | ++(void)initWithDelegate:(id<OpenInstallDelegate> _Nonnull)delegate; |
| 79 | + |
| 80 | + |
| 81 | +#pragma mark - added in v2.4.0 |
| 82 | +/** |
| 83 | + * 初始化sdk并传入广告标识符id(可选) |
| 84 | + * ***调用该方法前,需在Info.plist文件中配置键值对,键为com.openinstall.APP_KEY不能修改,值为相应的应用的appKey,可在openinstall官方后台查看*** |
| 85 | + * |
| 86 | + * @param adid 广告标识符,需用户自己获取并传入,默认为空,传入nil则与初始化方法 initwithDelegate: 一致 |
| 87 | + * @param delegate 委托方法所在的类的对象 |
| 88 | + * @discussion 1、只有需要使用“广告平台渠道”进行广告效果监测的用户才需调用,2、需开启后台开关,位置:"iOS集成"->"iOS应用配置"->"广告平台对接" |
| 89 | + * ***详细文档请查看:https://www.openinstall.io/doc/ad_ios.html*** |
| 90 | + */ |
| 91 | ++ (void)initWithDelegate:(nullable id<OpenInstallDelegate>)delegate advertisingId:(NSString *_Nullable)adid; |
| 92 | + |
| 93 | + |
| 94 | +#pragma mark - added in v2.5.4 |
| 95 | + |
| 96 | +/** |
| 97 | + * 初始化sdk,并传入广告相关参数 |
| 98 | + * 详细参考官网文档 |
| 99 | + * |
| 100 | + * @param delegate 委托方法所在的类的对象 |
| 101 | + * @param attribution 广告相关参数,如ASA token,idfa等,@{OP_ASA_Token:@"your ASA Token"} |
| 102 | + * 参考文档 https://www.openinstall.io/doc/asa.html |
| 103 | + */ |
| 104 | ++ (void)initWithDelegate:(nullable id<OpenInstallDelegate>)delegate adsAttribution:(NSDictionary *_Nullable)attribution; |
| 105 | + |
| 106 | + |
| 107 | +#pragma mark - Deprecated in v2.2.0(已废弃) |
| 108 | + |
| 109 | +/** |
| 110 | + * 初始化OpenInstall SDK (已废弃,请参考方法 initwithDelegate: 已使用该初始化方法的用户也可继续使用) |
| 111 | + * |
| 112 | + * @param appKey 控制中心创建应用获取appKey |
| 113 | + * @param delegate 委托方法(getWakeUpParams)所在的类的对象 |
| 114 | + * @discussion 老版本sdk升级过来可延用该api |
| 115 | + */ |
| 116 | ++(void)setAppKey:(nonnull NSString *)appKey withDelegate:(nullable id<OpenInstallDelegate>)delegate __deprecated_msg("Deprecated in v2.2.0,请参考方法<code>initwithDelegate</code>"); |
| 117 | + |
| 118 | + |
| 119 | +///---------------------- |
| 120 | +/// @name 获取安装的动态参数 |
| 121 | +///---------------------- |
| 122 | + |
| 123 | +#pragma mark - added in v2.2.0 |
| 124 | + |
| 125 | +/** |
| 126 | + * 开发者在需要获取用户安装app后由web网页传递过来的”动态参数“(如邀请码、游戏房间号,渠道编号,ASA渠道编号等)时调用该方法,可第一时间返回数据,可在任意位置调用 |
| 127 | + * |
| 128 | + * @param completedBlock 回调block,在主线程(UI线程)回调 |
| 129 | + * |
| 130 | + * @discussion |
| 131 | + 1、不要自己保存动态安装参数,在每次需要用到参数时,请调用该方法去获取; |
| 132 | + 2、该方法默认超时长一般为8~15秒不同版本会有浮动,使用了ASA则会在30秒左右,尽量写在业务场景需要参数的位置调用(在业务场景时,网络一般都是畅通的),例如,可以选择在用户注册成功后调用该方法获取参数,对用户进行奖励。原因是iOS首次安装、首次启动的app,会询问用户获取网络权限,用户允许后SDK才能正常联网去获取参数。如果调用过早,可能导致网络权限还未允许就被调用,导致参数无法及时拿到,误以为参数不存在(此时getInstallParmsCompleted法已超时,回调返回空); |
| 133 | + 3. 如果是业务需要,必须在application:didFinishLaunchingWithOptions方法中获取参数,可调用下面高级API,修改超时时长,比如30秒或更长。 |
| 134 | + |
| 135 | + * ***该方法可重复获取参数,如需在首次安装才获取安装参数,请自行判断,参考https://www.openinstall.io/doc/ios_sdk_faq.html*** |
| 136 | + */ |
| 137 | +-(void)getInstallParmsCompleted:(void (^_Nullable)(OpeninstallData*_Nullable appData))completedBlock; |
| 138 | + |
| 139 | + |
| 140 | +/** |
| 141 | + * 开发者在需要获取用户安装app后由web网页传递过来的”动态参数“(如邀请码、游戏房间号,渠道编号,ASA渠道编号等)时调用该方法,可第一时间返回数据,可在任意位置调用 |
| 142 | + * |
| 143 | + * @param timeoutInterval 可设置回调超时时长,单位秒(s) |
| 144 | + * @param completedBlock 回调block,在主线程(UI线程)回调 |
| 145 | + * |
| 146 | + * @discussion |
| 147 | + * ***开发者不要自行保存参数!!!如果获取动态参数成功,SDK会把参数保存在本地*** |
| 148 | + * ***该方法可重复获取参数,如需在首次安装才获取安装参数,请自行判断,参考https://www.openinstall.io/doc/ios_sdk_faq.html*** |
| 149 | + */ |
| 150 | +-(void)getInstallParmsWithTimeoutInterval:(NSTimeInterval)timeoutInterval |
| 151 | + completed:(void (^_Nullable)(OpeninstallData*_Nullable appData))completedBlock; |
| 152 | + |
| 153 | + |
| 154 | + |
| 155 | +#pragma mark - Deprecated in v2.1.1(已废弃) |
| 156 | +/** |
| 157 | + * 开发者直接获取动态参数,初始化之后调用(参数的正常获取时间1-2秒内) |
| 158 | + * @return NSDictionary |
| 159 | + */ |
| 160 | ++(NSDictionary *_Nullable)getOpenInstallParams __deprecated_msg("Deprecated in v2.1.1,请参考方法<code>getInstallParmsCompleted</code>"); |
| 161 | + |
| 162 | + |
| 163 | +///--------------------- |
| 164 | +/// @name 一键拉起回调处理 |
| 165 | +///--------------------- |
| 166 | + |
| 167 | +/** |
| 168 | + * 处理 URI schemes |
| 169 | + * @param URL 系统回调传回的URL |
| 170 | + * @return bool URL是否被OpenInstall识别 |
| 171 | + */ |
| 172 | ++(BOOL)handLinkURL:(NSURL *_Nullable)URL; |
| 173 | + |
| 174 | + |
| 175 | +/** |
| 176 | + * 处理 通用链接 |
| 177 | + * @param userActivity 存储了页面信息,包括url |
| 178 | + * @return bool URL是否被OpenInstall识别 |
| 179 | + */ |
| 180 | ++(BOOL)continueUserActivity:(NSUserActivity *_Nullable)userActivity; |
| 181 | + |
| 182 | + |
| 183 | + |
| 184 | +///-------------- |
| 185 | +/// @name 统计相关 |
| 186 | +///-------------- |
| 187 | + |
| 188 | + |
| 189 | +/** |
| 190 | + * 注册量统计 |
| 191 | + * |
| 192 | + * 使用openinstall 控制中心提供的渠道统计时,在App用户注册完成后调用,可以统计渠道注册量。 |
| 193 | + * 必须在注册成功的时再调用该方法,避免重复调用,否则可能导致注册统计不准 |
| 194 | + */ |
| 195 | ++(void)reportRegister; |
| 196 | + |
| 197 | + |
| 198 | +#pragma mark - added in v2.2.0 |
| 199 | +/** |
| 200 | + * 渠道效果统计 |
| 201 | + * |
| 202 | + * 目前SDK采用定时上报策略,时间间隔由服务器控制 |
| 203 | + * e.g.可统计用户支付消费情况,点击次数等 |
| 204 | + * |
| 205 | + * @param effectID 效果点ID |
| 206 | + * @param effectValue 效果点值(如果是人民币金额,请以分为计量单位) |
| 207 | + */ |
| 208 | +-(void)reportEffectPoint:(NSString *_Nonnull)effectID effectValue:(long)effectValue; |
| 209 | + |
| 210 | + |
| 211 | +#pragma mark - added in v2.6.0 |
| 212 | +/** |
| 213 | + * 渠道效果统计,效果明细上报 |
| 214 | + * |
| 215 | + * 目前SDK采用定时上报策略,时间间隔由服务器控制 |
| 216 | + * e.g.可统计用户支付消费情况,点击次数,以及效果明细等 |
| 217 | + * |
| 218 | + * @param effectID 效果点ID |
| 219 | + * @param effectValue 效果点值(如果是人民币金额,请以分为计量单位) |
| 220 | + * @param effectDictionary 效果点明细,key和value都要传入字符串格式 |
| 221 | + */ |
| 222 | +-(void)reportEffectPoint:(NSString *_Nonnull)effectID effectValue:(long)effectValue effectDictionary:(NSDictionary*_Nonnull)effectDictionary; |
| 223 | + |
| 224 | + |
| 225 | +#pragma mark - added in v2.7.0 |
| 226 | +/** |
| 227 | + * 分享上报 |
| 228 | + * |
| 229 | + * @param shareCode 分享用户ID;String 必填 |
| 230 | + * @param sharePlatform 分享平台:String 建议填入 根据已创建好的“OP_SharePlatform”字符串类型填入 |
| 231 | + * @param completedBlock 上报成功code=0,飞行模式/网络差/连接异常code=-1可重试,其它情况代表发生异常错误不需要重试,返回主线程 |
| 232 | + */ |
| 233 | +-(void)reportShareParametersWithShareCode:(NSString *_Nonnull)shareCode |
| 234 | + sharePlatform:(OP_SharePlatform _Nullable)sharePlatform |
| 235 | + completed:(void (^_Nullable)(NSInteger code,NSString *_Nullable msg))completedBlock; |
| 236 | + |
| 237 | + |
| 238 | +#pragma mark - added in v2.8.0 |
| 239 | +/** |
| 240 | + * 获取opid |
| 241 | + * 初始化后调用,非异步,须真机 |
| 242 | + * 也可以在`getInstallParmsCompleted`方法回调里调用,等待初始化完成后返回opid |
| 243 | + */ |
| 244 | +- (NSString *_Nullable)getOpId; |
| 245 | + |
| 246 | +@end |
| 247 | + |
0 commit comments