flutter京东SDK插件
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.
 
 
 
 
 

145 lines
4.9 KiB

  1. //
  2. // KeplerApiManager.h
  3. // KeplerApp
  4. // 提供Kepler服务
  5. // Created by JD.K on 16/6/20.
  6. // Copyright © 2016年 JD.K. All rights reserved.
  7. // version 3.0.3
  8. #import <Foundation/Foundation.h>
  9. #import <UIKit/UIKit.h>
  10. NS_ASSUME_NONNULL_BEGIN
  11. /** 初始化成功回调 */
  12. typedef void (^initSuccessCallback)();
  13. /** 初始化失败回调 */
  14. typedef void (^initFailedCallback)(NSError * _Nonnull error);
  15. /**
  16. 打开成功回调
  17. */
  18. typedef void(^OpenSuccessBlock)();
  19. /**
  20. * 响应失败的错误回调,返回一个错误的链接或信息
  21. */
  22. typedef void(^OpenFailedBlock)(NSInteger code, NSString * _Nonnull url);
  23. typedef enum {
  24. KeplerErrorCodeUnInstalled = 422, //未安装京东app
  25. KeplerErrorCodeWhited, //本地url不在白名单中
  26. KeplerErrorCodeResponsed, //本地呼起open协议失败
  27. KeplerErrorCodeNoSid, //sid为空
  28. KeplerErrorCodeInValidApp, //应用不合法
  29. KeplerErrorCodeUnInstalledJXAPP, //未安装京喜app
  30. KeplerErrorCodeOpenJXFailed //无法打开京喜商品,返回h5链接
  31. } KeplerErrorCode;
  32. typedef enum {
  33. KeplerJXErrorCodeSucceed = 0, //正常呼起
  34. KeplerJXErrorCodeReturnUrl = 1, //兜底url
  35. KeplerJXErrorCodeNoSkuUrl = 2, //非sku链接
  36. KeplerJXErrorCodeAnalysisFailed = 3, //逆解析失败
  37. KeplerJXErrorCodeNoParameter = -1, //参数为空
  38. KeplerJXErrorCodeUnusual = -99, //异常
  39. } KeplerJXErrorCode;
  40. FOUNDATION_EXTERN const NSString *kJDKeplerReturnUrl_appName;
  41. FOUNDATION_EXTERN const NSString *kJDKeplerReturnUrl_appSchema;
  42. FOUNDATION_EXTERN const NSString *kJDKeplerReturnUrl_appBundle;
  43. @interface KeplerApiManager : NSObject
  44. /**
  45. 分佣的 AppKey2
  46. */
  47. @property (nonatomic, copy) NSString *secondAppKey;
  48. //********************************* 通过京东APP打开链接相关参数 ************************************
  49. /**
  50. 当isOpenByH5为 NO 时,准备跳转到JD APP时会调用这些代码。可以把开启 Loading动画的代码放到这里
  51. 为避免造成混乱,在关闭Kepler界面时,会置为nil。因此需要在每次打开Kepler之前单独设置。
  52. */
  53. @property (nonatomic, copy) void(^startOpenJDAppBlock)();
  54. /**
  55. 当isOpenByH5为 NO 时,跳转JD APP准备工作完成时会调用这些代码,success为YES表示成功,可以打开JD APP,为NO时表示打开失败。
  56. 为避免造成混乱,在关闭Kepler界面时,会置为nil。因此需要在每次打开Kepler之前单独设置。
  57. update: success为NO且错误码等于-1005时,安全id为空
  58. */
  59. @property (nonatomic, copy) void(^finishOpenJDAppBlock)(BOOL success,NSError *error);
  60. /**
  61. * 京东达人内容ID 关闭kepler界面时会清除 如果需要此值 再次打开需要再次设置
  62. **/
  63. @property (nonatomic, copy) NSString *actId;
  64. /**
  65. * 京东达人 内容渠道扩展字段 关闭kepler界面时会清除 如果需要此值 再次打开需要再次设置
  66. **/
  67. @property (nonatomic, copy) NSString *ext;
  68. /**
  69. * 是否走服务端的渠道,默认走本地渠道
  70. */
  71. @property (nonatomic, assign) BOOL isServerChannel;
  72. /**
  73. 打开京东超时时间设置 关闭 Kepler 界面时不会重置 默认为60
  74. */
  75. @property (nonatomic, assign) NSTimeInterval openJDTimeout;
  76. //*******************************************************************************************************
  77. /**
  78. * KeplerApiManager 单例
  79. *
  80. * @return KeplerApiManager 单例
  81. */
  82. + (KeplerApiManager *)sharedKPService;
  83. /**
  84. * 注册Kepler 服务
  85. *
  86. * @param appKey 注册的appKey
  87. * @param appSecret 注册的secretKey
  88. */
  89. - (void)asyncInitSdk:(NSString *)appKey
  90. secretKey:(NSString *)appSecret
  91. sucessCallback:(initSuccessCallback)sucessCallback
  92. failedCallback:(initFailedCallback)failedCallback;
  93. /**
  94. 跳转京东app
  95. @param url 调用方传入的URL参数
  96. @param userInfo 调用sdk时传入的kepler自定义参数
  97. @param failedCallback code 表示错误编码, url 引起调用失败的url
  98. */
  99. - (void)openKeplerPageWithURL:(NSString *)url
  100. userInfo:(NSDictionary *)userInfo
  101. successCallback:(OpenSuccessBlock _Nullable)success
  102. failedCallback:(OpenFailedBlock _Nonnull)failure;
  103. /**
  104. 根据url跳转京喜App,根据接口返回结果兼容京东App商品跳转
  105. @param url 商品链接
  106. @param userInfo 自定义参数
  107. @param successBlock 呼起App成功的回调
  108. @param failureBlock 呼起失败回调。打开原生App失败会以code+url方式返回,可用webview打开url
  109. @discussion 返回键信息通过userInfo参数传入,需通过外部变量kJDKeplerReturnUrl_appName,kJDKeplerReturnUrl_appSchema,kJDKeplerReturnUrl_appBundle设置key值,对应value分别为接入应用的应用名,schema,Bundle Identifier。
  110. */
  111. - (void)openJXPageWithUrl:(NSString *)url
  112. userInfo:(NSDictionary *)userInfo
  113. success:(OpenSuccessBlock)successBlock
  114. failure:(OpenFailedBlock)failureBlock;
  115. @end
  116. NS_ASSUME_NONNULL_END