智莺生活APP的阿里百川 Flutter 插件
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

525 lines
23 KiB

  1. //
  2. // FlutterAlibcHandle.m
  3. // flutter_alibc
  4. //
  5. // Created by 吴兴 on 2019/8/28.
  6. //
  7. #import "FlutterAlibcHandle.h"
  8. #import "FlutterAlibcTools.h"
  9. #import "FlutterAlibcConstKey.h"
  10. #import <AlibcTradeSDK/AlibcTradeSDK.h>
  11. //#import <AlibabaAuthSDK/albbsdk.h>
  12. #import "ALiTradeWebViewController.h"
  13. #import "FlutterWxViewCtrlViewController.h"
  14. #import <AlibabaAuthEntrance/ALBBSDK.h>
  15. #import <AlibabaAuthEntrance/ALBBCompatibleSession.h>
  16. #import "UTDID/UTDevice.h"
  17. @implementation FlutterAlibcHandle
  18. FlutterMethodChannel *_flutterAlibcChannel = nil;
  19. - (instancetype)initWithRegistrar:(NSObject <FlutterPluginRegistrar> *)registrar methodChannel:(FlutterMethodChannel *)flutterMethodChannel {
  20. self = [super init];
  21. if (self) {
  22. _flutterAlibcChannel = flutterMethodChannel;
  23. }
  24. return self;
  25. }
  26. #pragma mark- 对flutter暴露的方法
  27. #pragma mark -- 初始化阿里百川
  28. - (void)initAlibc:(FlutterMethodCall *)call result:(FlutterResult)result {
  29. // 百川平台基础SDK初始化,加载并初始化各个业务能力插件
  30. NSString *version = call.arguments[@"version"];
  31. NSString *appName = call.arguments[@"appName"];
  32. // 判断是否为空
  33. if(![FlutterAlibcTools isNil:version]){
  34. [[AlibcTradeSDK sharedInstance] setIsvVersion:version]; //设置三方App版本,可用于标识App版本
  35. }
  36. if(![FlutterAlibcTools isNil:appName]){
  37. [[AlibcTradeSDK sharedInstance] setIsvAppName:appName]; //设置三方App名称,可用于标识App
  38. }
  39. [[AlibcTradeSDK sharedInstance] setDebugLogOpen:YES];//开发阶段打开日志开关,方便排查错误信息
  40. [[AlibcTradeSDK sharedInstance] setEnv:AlibcEnvironmentRelease];//线上环境
  41. [[AlibcTradeSDK sharedInstance] asyncInitWithSuccess:^{
  42. // 告诉flutter,初始化完成
  43. result(@{FlutterAlibcConstKey_ErrorCode:@"0",FlutterAlibcConstKey_ErrorMessage:@"success"});
  44. } failure:^(NSError *error) {
  45. NSLog(@"Init failed: %@", error.description);
  46. result(@{FlutterAlibcConstKey_ErrorCode:[NSString stringWithFormat: @"%ld", (long)error.code],FlutterAlibcConstKey_ErrorMessage:error.description});
  47. }];
  48. }
  49. #pragma mark --淘宝登录
  50. - (void)loginTaoBao:(FlutterMethodCall *)call result:(FlutterResult)result{
  51. if(![[ALBBCompatibleSession sharedInstance] isLogin]) {
  52. UIViewController *rootViewController =
  53. [UIApplication sharedApplication].delegate.window.rootViewController;
  54. [[ALBBSDK sharedInstance] setH5Only:NO];
  55. [[ALBBSDK sharedInstance] auth:rootViewController successCallback:^{
  56. ALBBUser *userInfo =[[ALBBCompatibleSession sharedInstance] getUser];
  57. // 登录成功
  58. result(@{
  59. FlutterAlibcConstKey_ErrorCode:@"0",
  60. FlutterAlibcConstKey_ErrorMessage:@"success",
  61. FlutterAlibcConstKey_Data:@{
  62. // 昵称
  63. @"nick":userInfo.nick,
  64. // 头像地址
  65. @"avatarUrl":userInfo.avatarUrl,
  66. @"openId":userInfo.openId,
  67. @"openSid":userInfo.openSid,
  68. @"topAccessToken":userInfo.topAccessToken,
  69. @"topAuthCode":userInfo.topAuthCode,
  70. }
  71. });
  72. } failureCallback:^(NSError *error) {
  73. // 登录失败
  74. result(@{
  75. FlutterAlibcConstKey_ErrorCode:[NSString stringWithFormat: @"%ld", (long)error.code],
  76. FlutterAlibcConstKey_ErrorMessage:error.localizedDescription,
  77. FlutterAlibcConstKey_Data:@{}
  78. });
  79. }];
  80. } else {
  81. ALBBUser *userInfo =[[ALBBCompatibleSession sharedInstance] getUser];
  82. // 登录成功
  83. result(@{
  84. FlutterAlibcConstKey_ErrorCode:@"0",
  85. FlutterAlibcConstKey_ErrorMessage:@"success",
  86. FlutterAlibcConstKey_Data:@{
  87. // 昵称
  88. @"nick":userInfo.nick,
  89. // 头像地址
  90. @"avatarUrl":userInfo.avatarUrl,
  91. @"openId":userInfo.openId,
  92. @"openSid":userInfo.openSid,
  93. @"topAccessToken":userInfo.topAccessToken,
  94. @"topAuthCode":userInfo.topAuthCode,
  95. }
  96. });
  97. }
  98. }
  99. //
  100. //else if([@"useAlipayNative" isEqualToString:call.method]){
  101. // [_handler useAlipayNative:call result:result];
  102. //}
  103. #pragma mark --淘客登录
  104. -(void)taoKeLogin:(FlutterMethodCall *)call result:(FlutterResult)result{
  105. // 需要获取的数据
  106. NSNumber *type1 = call.arguments[@"openType"];
  107. AlibcOpenType openType = [self openType:[type1 intValue]];
  108. BOOL isNeedCustomNativeFailMode = [call.arguments[@"isNeedCustomNativeFailMode"] boolValue];
  109. // 不用push了,没有nav,默认都present
  110. // BOOL isNeedPush = [call.arguments[@"isNeedPush"] boolValue];
  111. BOOL isNeedPush = YES;
  112. NSNumber *failMode = call.arguments[@"nativeFailMode"];
  113. AlibcNativeFailMode nativeFailMode = [self NativeFailMode:[failMode intValue]];
  114. NSNumber *schemeType = call.arguments[@"schemeType"];
  115. NSString *linkKey = [self schemeType:[schemeType intValue]];
  116. NSString *url = call.arguments[@"url"];
  117. AlibcTradeTaokeParams *taokeParam = [self getTaokeParams:call];
  118. NSDictionary *trackParam = call.arguments[@"trackParam"];
  119. NSString *backUrl = [FlutterAlibcTools changeType:call.arguments[@"backUrl"]];
  120. // NSString *backUrl = [FlutterAlibcTools nullToNil:call.arguments[@"backUrl"]];
  121. UIViewController *rootViewController = [UIApplication sharedApplication].delegate.window.rootViewController;
  122. AlibcTradeShowParams* showParam = [[AlibcTradeShowParams alloc] init];
  123. showParam.openType = openType;
  124. showParam.isNeedCustomNativeFailMode = isNeedCustomNativeFailMode;
  125. showParam.isNeedPush=isNeedPush;
  126. showParam.nativeFailMode=nativeFailMode;
  127. showParam.linkKey=linkKey;
  128. showParam.backUrl= backUrl;
  129. ALiTradeWebViewController* webviewVC = [[ALiTradeWebViewController alloc] init];
  130. NSInteger res = [[AlibcTradeSDK sharedInstance].tradeService
  131. openByUrl:url
  132. identity:@"trade"
  133. webView:webviewVC.webView
  134. parentController:rootViewController
  135. showParams:showParam
  136. taoKeParams:taokeParam
  137. trackParam:trackParam tradeProcessSuccessCallback:^(AlibcTradeResult * _Nullable alibcTradeResult) {
  138. // // 交易成功,判断是付款成功还是加入购物车
  139. // if(alibcTradeResult.result == AlibcTradeResultTypePaySuccess){
  140. // // 付款成功
  141. // result(@{
  142. // FlutterAlibcConstKey_ErrorCode:@"0",
  143. // FlutterAlibcConstKey_ErrorMessage:@"付款成功",
  144. // FlutterAlibcConstKey_Data:@{
  145. // @"type":@0,
  146. // @"paySuccessOrders":[alibcTradeResult payResult].paySuccessOrders,
  147. // @"payFailedOrders":[alibcTradeResult payResult].payFailedOrders,
  148. // }
  149. // });
  150. // }else if(alibcTradeResult.result== AlibcTradeResultTypeAddCard){
  151. // // 加入购物车
  152. // result(@{
  153. // FlutterAlibcConstKey_ErrorCode:@"0",
  154. // FlutterAlibcConstKey_ErrorMessage:@"加入购物车成功",
  155. // FlutterAlibcConstKey_Data:@{
  156. // @"type":@1,
  157. // }
  158. // });
  159. // }
  160. } tradeProcessFailedCallback:^(NSError * _Nullable error) {
  161. // result(@{
  162. // FlutterAlibcConstKey_ErrorCode:[NSString stringWithFormat: @"%ld", (long)error.code],
  163. // FlutterAlibcConstKey_ErrorMessage:[error localizedDescription],
  164. // });
  165. }];
  166. if (res == 1) {
  167. // 新建一个view
  168. FlutterWxViewCtrlViewController *WxVC = [[FlutterWxViewCtrlViewController alloc] init];
  169. WxVC.vc = webviewVC;
  170. WxVC.accessBlock = ^(NSString * accessToken){
  171. NSLog(@"accessToken = %@",accessToken);
  172. if (accessToken) {
  173. result(@{
  174. @"accessToken":accessToken
  175. });
  176. }else{
  177. result(@{
  178. @"accessToken":@""
  179. });
  180. }
  181. };
  182. UINavigationController *root = [[UINavigationController alloc] initWithRootViewController:WxVC];
  183. [rootViewController presentViewController:root animated:NO completion:^{
  184. }];
  185. }
  186. }
  187. #pragma mark --退出登录
  188. - (void)loginOut{
  189. [[ALBBSDK sharedInstance] logout];
  190. }
  191. #pragma mark --通过url打开,包括h5,唤起手淘等
  192. - (void)openByUrl:(FlutterMethodCall *)call result:(FlutterResult)result{
  193. // 需要获取的数据
  194. NSNumber *type1 = call.arguments[@"openType"];
  195. AlibcOpenType openType = [self openType:[type1 intValue]];
  196. BOOL isNeedCustomNativeFailMode = [call.arguments[@"isNeedCustomNativeFailMode"] boolValue];
  197. // 不用push了,没有nav,默认都present
  198. // BOOL isNeedPush = [call.arguments[@"isNeedPush"] boolValue];
  199. BOOL isNeedPush = NO;
  200. NSNumber *failMode = call.arguments[@"nativeFailMode"];
  201. AlibcNativeFailMode nativeFailMode = [self NativeFailMode:[failMode intValue]];
  202. NSNumber *schemeType = call.arguments[@"schemeType"];
  203. NSString *linkKey = [self schemeType:[schemeType intValue]];
  204. NSString *url = call.arguments[@"url"];
  205. AlibcTradeTaokeParams *taokeParam = [self getTaokeParams:call];
  206. NSDictionary *trackParam = call.arguments[@"trackParam"];
  207. NSString *backUrl = [FlutterAlibcTools changeType:call.arguments[@"backUrl"]];
  208. // NSString *backUrl = [FlutterAlibcTools nullToNil:call.arguments[@"backUrl"]];
  209. UIViewController *rootViewController = [UIApplication sharedApplication].delegate.window.rootViewController;
  210. AlibcTradeShowParams* showParam = [[AlibcTradeShowParams alloc] init];
  211. showParam.openType = openType;
  212. showParam.isNeedCustomNativeFailMode = isNeedCustomNativeFailMode;
  213. showParam.isNeedPush=isNeedPush;
  214. showParam.nativeFailMode=nativeFailMode;
  215. showParam.linkKey=linkKey;
  216. showParam.backUrl= backUrl;
  217. [[AlibcTradeSDK sharedInstance].tradeService openByUrl:url identity:@"trade" webView:nil parentController:rootViewController showParams:showParam taoKeParams:taokeParam trackParam:trackParam tradeProcessSuccessCallback:^(AlibcTradeResult * _Nullable alibcTradeResult) {
  218. // 交易成功,判断是付款成功还是加入购物车
  219. if(alibcTradeResult.result == AlibcTradeResultTypePaySuccess){
  220. // 付款成功
  221. result(@{
  222. FlutterAlibcConstKey_ErrorCode:@"0",
  223. FlutterAlibcConstKey_ErrorMessage:@"付款成功",
  224. FlutterAlibcConstKey_Data:@{
  225. @"type":@0,
  226. @"paySuccessOrders":[alibcTradeResult payResult].paySuccessOrders,
  227. @"payFailedOrders":[alibcTradeResult payResult].payFailedOrders,
  228. }
  229. });
  230. }else if(alibcTradeResult.result== AlibcTradeResultTypeAddCard){
  231. // 加入购物车
  232. result(@{
  233. FlutterAlibcConstKey_ErrorCode:@"0",
  234. FlutterAlibcConstKey_ErrorMessage:@"加入购物车成功",
  235. FlutterAlibcConstKey_Data:@{
  236. @"type":@1,
  237. }
  238. });
  239. }
  240. } tradeProcessFailedCallback:^(NSError * _Nullable error) {
  241. result(@{
  242. FlutterAlibcConstKey_ErrorCode:[NSString stringWithFormat: @"%ld", (long)error.code],
  243. FlutterAlibcConstKey_ErrorMessage:[error localizedDescription],
  244. // android没有,直接去掉
  245. // FlutterAlibcConstKey_Data:@{
  246. // @"orderIdList":[[error userInfo] objectForKey:@"orderIdList"],
  247. // }
  248. });
  249. }];
  250. }
  251. #pragma mark --打开商品详情
  252. - (void)openItemDetail:(FlutterMethodCall *)call result:(FlutterResult)result{
  253. NSString *itemID = call.arguments[@"itemID"];
  254. id<AlibcTradePage> page = [AlibcTradePageFactory itemDetailPage:itemID];
  255. [self OpenPageByNewWay:page BizCode:@"detail" Call:call callback:result];
  256. }
  257. #pragma mark --打开店铺
  258. - (void)openShop:(FlutterMethodCall *)call result:(FlutterResult)result{
  259. NSString *shopId = call.arguments[@"shopId"];
  260. id<AlibcTradePage> page = [AlibcTradePageFactory shopPage:shopId];
  261. [self OpenPageByNewWay:page BizCode:@"shop" Call:call callback:result];
  262. }
  263. #pragma mark --打开我的购物车
  264. - (void)openCart:(FlutterMethodCall *)call result:(FlutterResult)result{
  265. id<AlibcTradePage> page = [AlibcTradePageFactory myCartsPage];
  266. [self OpenPageByNewWay:page BizCode:@"cart" Call:call callback:result];
  267. }
  268. #pragma mark --淘客打点
  269. - (void)syncForTaoke:(FlutterMethodCall *)call result:(FlutterResult)result{
  270. BOOL isSync = [call.arguments[@"isSync"] boolValue];
  271. [[AlibcTradeSDK sharedInstance] setIsSyncForTaoke:isSync];
  272. }
  273. #pragma mark --设置是否需要 Native AliPay 接口
  274. - (void)useAlipayNative:(FlutterMethodCall *)call result:(FlutterResult)result{
  275. BOOL isNeed = [call.arguments[@"isNeed"] boolValue];
  276. [[AlibcTradeSDK sharedInstance] setShouldUseAlizfNative:isNeed];
  277. }
  278. //获取udid
  279. - (void)getUdid:(FlutterMethodCall *)call result:(FlutterResult)result{
  280. NSUUID *identifierForVendor = [[UIDevice currentDevice] identifierForVendor];
  281. NSDictionary* map=@{@"udid" : [UTDevice utdid]};
  282. result(map);
  283. }
  284. #pragma mark - 不对flutter暴露
  285. #pragma mark --打开page
  286. - (void)OpenPageByNewWay:(id<AlibcTradePage>)page BizCode:(NSString *)bizCode Call:(FlutterMethodCall *)call callback:(FlutterResult)callback{
  287. AlibcTradeShowParams* showParam = [[AlibcTradeShowParams alloc] init];
  288. NSNumber *type1 = call.arguments[@"openType"];
  289. AlibcOpenType openType = [self openType:[type1 intValue]];
  290. BOOL isNeedCustomNativeFailMode = [call.arguments[@"isNeedCustomNativeFailMode"] boolValue];
  291. // 不用push了,没有nav,默认都present
  292. // BOOL isNeedPush = [call.arguments[@"isNeedPush"] boolValue];
  293. BOOL isNeedPush = NO;
  294. // 不用绑定了,默认为没有,有的话flutter太难搞了
  295. // BOOL isBindWebview = [call.arguments[@"isBindWebview"] boolValue];
  296. NSNumber *failMode = call.arguments[@"nativeFailMode"];
  297. AlibcNativeFailMode nativeFailMode = [self NativeFailMode:[failMode intValue]];
  298. NSNumber *schemeType = call.arguments[@"schemeType"];
  299. NSString *linkKey = [self schemeType:[schemeType intValue]];
  300. AlibcTradeTaokeParams *taokeParam = [self getTaokeParams:call];
  301. NSDictionary *trackParam = [FlutterAlibcTools nullToNil:call.arguments[@"trackParam"]];
  302. NSString *backUrl = [FlutterAlibcTools changeType:call.arguments[@"backUrl"]];
  303. // 判断
  304. UIViewController *rootViewController = [UIApplication sharedApplication].delegate.window.rootViewController;
  305. showParam.openType = openType;
  306. showParam.isNeedPush = isNeedPush;
  307. showParam.nativeFailMode = nativeFailMode;
  308. showParam.isNeedCustomNativeFailMode = isNeedCustomNativeFailMode;
  309. showParam.linkKey = linkKey;
  310. showParam.backUrl = backUrl;
  311. // if (isBindWebview) {
  312. // ALiTradeWebViewController *viewCtrl = [[ALiTradeWebViewController alloc]init];
  313. // NSInteger res = [[AlibcTradeSDK sharedInstance].tradeService openByBizCode:bizCode page:page webView:view.webView parentController:view showParams:showParam taoKeParams:[self taokeParam] trackParam:[self customParam] tradeProcessSuccessCallback:self.onTradeSuccess tradeProcessFaelseiledCallback:self.onTradeFailure];
  314. // }else{
  315. // if (isNeedPush) {
  316. // [[AlibcTradeSDK sharedInstance].tradeService openByBizCode:bizCode page:page webView:nil parentController:rootViewController showParams:showParam taoKeParams:taokeParam trackParam:trackParam tradeProcessSuccessCallback:^(AlibcTradeResult * _Nullable result) {
  317. //// 交易成功,判断是付款成功还是加入购物车
  318. // if(result.result == AlibcTradeResultTypePaySuccess){
  319. //// 付款成功
  320. // callback(@{
  321. // FlutterAlibcConstKey_ErrorCode:@"0",
  322. // FlutterAlibcConstKey_ErrorMessage:@"付款成功",
  323. // FlutterAlibcConstKey_Data:@{
  324. // @"type":@0,
  325. // @"paySuccessOrders":[result payResult].paySuccessOrders,
  326. // @"payFailedOrders":[result payResult].payFailedOrders,
  327. // }
  328. // });
  329. // }else if(result.result== AlibcTradeResultTypeAddCard){
  330. //// 加入购物车
  331. // callback(@{
  332. // FlutterAlibcConstKey_ErrorCode:@"0",
  333. // FlutterAlibcConstKey_ErrorMessage:@"付款成功",
  334. // FlutterAlibcConstKey_Data:@{
  335. // @"type":@1,
  336. // }
  337. // });
  338. // }
  339. // } tradeProcessFailedCallback:^(NSError * _Nullable error) {
  340. //// 退出交易流程
  341. // callback(@{
  342. // FlutterAlibcConstKey_ErrorCode:[NSString stringWithFormat: @"%ld", (long)error.code],
  343. // FlutterAlibcConstKey_ErrorMessage:[error localizedDescription],
  344. // FlutterAlibcConstKey_Data:@{
  345. // @"orderIdList":[[error userInfo] objectForKey:@"orderIdList"],
  346. // }
  347. // });
  348. // }];
  349. // }else{
  350. [[AlibcTradeSDK sharedInstance].tradeService openByBizCode:bizCode page:page webView:nil parentController:rootViewController showParams:showParam taoKeParams:taokeParam trackParam:trackParam tradeProcessSuccessCallback:^(AlibcTradeResult * _Nullable result) {
  351. // 交易成功,判断是付款成功还是加入购物车
  352. if(result.result == AlibcTradeResultTypePaySuccess){
  353. // 付款成功
  354. callback(@{
  355. FlutterAlibcConstKey_ErrorCode:@"0",
  356. FlutterAlibcConstKey_ErrorMessage:@"付款成功",
  357. FlutterAlibcConstKey_Data:@{
  358. @"type":@0,
  359. @"paySuccessOrders":[result payResult].paySuccessOrders,
  360. @"payFailedOrders":[result payResult].payFailedOrders,
  361. }
  362. });
  363. }else if(result.result== AlibcTradeResultTypeAddCard){
  364. // 加入购物车
  365. callback(@{
  366. FlutterAlibcConstKey_ErrorCode:@"0",
  367. FlutterAlibcConstKey_ErrorMessage:@"加入购物车成功",
  368. FlutterAlibcConstKey_Data:@{
  369. @"type":@1,
  370. }
  371. });
  372. }
  373. } tradeProcessFailedCallback:^(NSError * _Nullable error) {
  374. // 退出交易流程
  375. callback(@{
  376. FlutterAlibcConstKey_ErrorCode:[NSString stringWithFormat: @"%ld", (long)error.code],
  377. FlutterAlibcConstKey_ErrorMessage:[error localizedDescription],
  378. // Android没有,所以去掉
  379. // FlutterAlibcConstKey_Data:@{
  380. // @"orderIdList":[[error userInfo] objectForKey:@"orderIdList"],
  381. // }
  382. });
  383. }];
  384. // }
  385. //}
  386. }
  387. #pragma mark --设置淘客参数
  388. - (AlibcTradeTaokeParams *)getTaokeParams:(FlutterMethodCall *)call{
  389. AlibcTradeTaokeParams *taoke = [[AlibcTradeTaokeParams alloc] init];
  390. if (call.arguments[@"taoKeParams"] == nil || [call.arguments[@"taoKeParams"] isKindOfClass:[NSNull class]]) {
  391. return nil;
  392. }
  393. NSDictionary *taoKeParams = call.arguments[@"taoKeParams"];
  394. taoke.adzoneId = (taoKeParams[@"adzoneId"] == (id) [NSNull null]) ? nil : taoKeParams[@"adzoneId"];
  395. taoke.pid = (taoKeParams[@"pid"] == (id) [NSNull null]) ? nil : taoKeParams[@"pid"];
  396. //有adzoneId则pid失效
  397. taoke.unionId = (taoKeParams[@"unionId"] == (id) [NSNull null]) ? nil : taoKeParams[@"unionId"];
  398. taoke.subPid = (taoKeParams[@"subPid"] == (id) [NSNull null]) ? nil : taoKeParams[@"subPid"];
  399. // 必须是dic
  400. taoke.extParams = (taoKeParams[@"extParams"] == (id) [NSNull null]) ? nil : taoKeParams[@"extParams"];
  401. // 判断这玩意是什么格式,dic就直接赋值,jsoÏn需要转dic
  402. // if ([extParams isKindOfClass:[NSDictionary class]]) {
  403. // taoke.extParams = extParams;
  404. // }else{
  405. // 解析字符串
  406. // taoke.extParams = [FlutterAlibcTools dictionaryWithJsonString:extParams];
  407. // }
  408. return taoke;
  409. }
  410. #pragma mark - 转换
  411. #pragma mark --唤起端失败的策略转换
  412. -(AlibcNativeFailMode )NativeFailMode:(int)mode{
  413. AlibcNativeFailMode openType=AlibcNativeFailModeJumpH5;
  414. switch (mode) {
  415. case 0:
  416. openType=AlibcNativeFailModeJumpH5;
  417. break;
  418. case 1:
  419. openType=AlibcNativeFailModeJumpDownloadPage;
  420. break;
  421. case 2:
  422. openType=AlibcNativeFailModeNone;
  423. break;
  424. default:
  425. break;
  426. }
  427. return openType;
  428. }
  429. //唤起类型
  430. - (AlibcOpenType)openType:(int)mode{
  431. AlibcOpenType openType=AlibcOpenTypeAuto;
  432. switch (mode) {
  433. case 0:
  434. openType=AlibcOpenTypeAuto;
  435. break;
  436. case 1:
  437. openType=AlibcOpenTypeNative;
  438. break;
  439. default:
  440. break;
  441. }
  442. return openType;
  443. }
  444. //打开类型
  445. -(NSString*)schemeType:(int)mode{
  446. NSString *linkKey=@"tmall";
  447. switch (mode) {
  448. case 0:
  449. linkKey=@"tmall";
  450. break;
  451. case 1:
  452. linkKey=@"taobao";
  453. break;
  454. default:
  455. break;
  456. }
  457. return linkKey;
  458. }
  459. /**
  460. 可设置的参数
  461. 1.是否同步淘客打点
  462. 2.是否使用Native支付宝
  463. 3.是否使用淘客参数(是,需要设置如下参数)
  464. adzoneId
  465. pid
  466. //有adzoneId则pid失效
  467. unionId
  468. subPid
  469. extParams{
  470. sellerId
  471. taokeAppkey
  472. }
  473. 4.页面打开方式
  474. 是否唤端 Auto/Native
  475. 唤起目标应用 淘宝/天猫
  476. 是否以push的方式打开页面
  477. 是否绑定webview
  478. 是否自定义唤端失败策略(若是:H5,DownLoad,None)
  479. 5.跟踪参数 customParams自定义
  480. */
  481. @end