管理平台

iOS SDK 集成文档

(XCode 集成环境,SDK版本2.2.5以及之上版本)

 

1、客户端SDK接入需要的准备工作

1) 入驻开普勒,创建应用;

2) 下载客户端SDK;

注意事项:下载的SDK中,有一张安全图片文件safe.jpg ,在指定路径 Kepler.bundle 下,「安全图片」是开普勒SDK安全机制的一部分,安全图片位于下载的SDK包中,为了使SDK正常工作,需要开发者确保正确的使用安全图片,请勿修改和移动

 

2、客户端SDK加入工程

将SDK文件夹(包含JDKeplerSDK.framework和Kepler.bundle)导入到工程中,并把Framework同时添加到(Build Phases->Link Binary With Libraries)中,如图。

 

依赖导入系统类库:如图 

设置Link Flags

在Target->Build Setting->Linking->Other Linker Flags中添加-ObjC

支持系统版本ios7.0及以上版本

 

3、外部调用url参数配置

在"Info.plist"中将要在外部调用的URL scheme(jdlogin)列为白名单,并且添加注册的URL Scheme,CFBundleURLSchemes的内容为 sdkback+对应使用方的appKey              

内容如下图所示:

 


具体代码:

<key>LSApplicationQueriesSchemes</key>

  <array>

<string>jdlogin</string>

 <string>openapp.jdmobile</string>

             <string>weixin</string>

  </array>

  <key>CFBundleURLTypes</key>

  <array>

    <dict>

      <key>CFBundleTypeRole</key><string>Editor</string>

      <key>CFBundleURLName</key>

      <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>

      <key>CFBundleURLSchemes</key>

      <array>

        <string>sdkback2cfd6d990a0a4fbd846ca25f1c028134</string>

      </array>

    </dict>

</array>

 

4、权限配置

    在部分京东页面需要访问相机和相册 因此需要在info.plist文件中配置权限. 代码如下.String中可自定义提示文字.

<key>NSPhotoLibraryUsageDescription</key>

    <string></string>

<key>NSCameraUsageDescription</key>

<string></string>

 

5、示例demo下载使用

使用说明:demo下载后导入Xcode中;

 

6、在AppDelegate中添加代码


1)必须添加部分

 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    [[KeplerApiManager sharedKPService]asyncInitSdk:Value_AppKey secretKey:Value_AppSecret sucessCallback:^(){

    }failedCallback:^(NSError *error){  

    }];

    return YES;

}

 

其中appKey ,appSecret, 在开普勒第三方app申请中获取。如果初始化失败,请检查参数是否与申请时获取的参数是否一致,

修改Kepler.bundle中安全图片的内容或者名称也会导致注册失败。

 

2)SSO授权登录回调场景使用(必须调用,如果SDK接收不到授权回调信息会造成重复授权的问题).

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)

sourceApplication annotation:(id)annotation NS_AVAILABLE_IOS(4_2){

    return [[KeplerApiManager sharedKPServicehandleOpenURL:url];

}

 

同时实现iOS9+新的系统API

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options{

    return [[KeplerApiManager sharedKPServicehandleOpenURL:url];

}

 

3)后台检查更新模板(可选)

需要开启服务:如图:

 

//iOS7以后会根据获取的结果适当的调整唤醒的时间策略 (可选)

- (void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { 

    BOOL haveJDKeplerServiceNewContent = NO;

    [self fetchJDKeplerService:&haveJDKeplerServiceNewContent];

    if (haveJDKeplerServiceNewContent){

        completionHandler(UIBackgroundFetchResultNewData);

    } else {

        completionHandler(UIBackgroundFetchResultNoData);

    }

}


(可选)

- (void)fetchJDKeplerService:(BOOL *)paramFetchedJDKeplerNewContent { 

    [[KeplerApiManager sharedKPService] checkUpdate]; //检测更新

}

 

7、实际功能开发

/**

 *  通过URL打开任意商品页面

 *  @param url              页面url

 *  @param sourceController 当前显示的UIViewController

 *  @param jumpType         跳转类型(默认 push) 1代表present 2代表push

 *  @param userInfo    不需要可以传nil  传参数据为第三方应用自定义,可以为页面,频道标识;也可以标识分成信息;该数据只做统计需求。

传参长度,使用URL encode之后长度必须小于256字节(不建议传入中文以及特殊字符)

  * 禁止传参带入以下符号:   =#%&+?<{}

 */

 

- (void)openKeplerPageWithURL:(NSString *)url sourceController:(UIViewController *)

sourceController jumpType:(NSInteger)jumpType userInfo:(NSDictionary *)userInfo;

 

/**

 *  打开导航页

 */

-  (void)openNavigationPage:(UIViewController *)sourceController jumpType:(NSInteger)jumpType userInfo:(NSDictionary *)userInfo;

 

 

/**

 *  通过SKU打开Kepler单品页

 *  @param sku              商品SKU

 */

- (void)openItemDetailWithSKU:(NSString *)sku sourceController:(UIViewController *)

sourceController jumpType:(NSInteger)jumpType userInfo:(NSDictionary *)userInfo;

 

 

/**

 *  打开订单列表

 */

- (void)openOrderList:(UIViewController *)sourceController jumpType:(NSInteger)jumpType userInfo:(NSDictionary *)userInfo;

 

 

/**

 *  根据搜索关键字打开搜索结果页

 *  @param searchKey        搜索关键字

 */

- (void)openSearchResult:(NSString *)searchKey sourceController:(UIViewController *)

sourceController jumpType:(NSInteger)jumpType userInfo:(NSDictionary *)userInfo;

 

 

/**  

 *  根据传入的名称打开对应的分类列表

 *  名称必须是京东支持的分类: 

@"热门分类","手机",@"家用电器",@"电脑办公","摄影数码",@"女装服饰",@"男装服饰",@"时尚鞋靴",@"内衣配件",@"运动户外",

@"珠宝饰品",@"钟表",@"母婴用品",@"童装童鞋",@"玩具乐器",@"护肤美妆",@"清洁洗护",@"皮具箱包",@"家居家纺",@"生活用品",

@"食品生鲜",@"酒水饮料",@"奢品礼品",@"家具建材",@"热卖品牌",@"营养保健",@"汽车用品",@"宠物专区",@"图书音像"@"情趣用品"; 

也可打开导航页实时查看所支持的分类.

 */

- (void)openCategoryListWithName:(NSString *)categoryName sourceController:(UIViewController *)

sourceController jumpType:(NSInteger)jumpType userInfo:(NSDictionary *)userInfo;

 

 

/**

 *  打开购物车界面

 */

- (void)openShoppingCart:(UIViewController *)sourceController jumpType:(NSInteger)jumpType userInfo:(NSDictionary *)userInfo;

 

 

/** 

 *  添加到购物车

 *

 *  @param skuList 添加到购物车中的商品id

 *  @param numList 添加到购物车中商品数量,多个商品必须与skuList一一对应

 *  @param success 添加成功回调

 *  @param failure 添加失败回调

 */

 

 

- (void)addToCartWithSkuList:(NSArray *)skuList numList:(NSArray *)numList sourceController:(UIViewController *)

sourceController success:(void(^)(void))success failure:(void(^)(NSError *))failure;

 

 

  /**

 *  静态化检测更新

 */

-  (void)checkUpdate;

 

 

/**

 *  取消授权,清除登录态

 */

- (void)cancelAuth; 

 

 /**

 *  直接唤起登录授权界面

 * 用户登录授权成功后会返回用户token,登录授权失败会返回对应错误信息

 */

- (void)keplerLoginWithViewController:(UIViewController *)viewController 

        success:(keplerLoginSuccessCallback)successCallback 

        failure:(keplerLoginFailureCallback)failureCallback;

 

 

 /**

 *  设置加载进度条颜色, 可在初始化SDK成功后进行设置

 */

- (void)setKeplerProgressBarColor:(UIColor *)progressBarColor;

 

/**

 *  标识曾经登录完成过,因为服务端安全逻辑,可能这个用户登录态已经失效

 */

-  (BOOL)isKeplerLogin;

 

/**

 是否强制使用H5打开界面 默认为YES;设置为NO时,调用商品详情页,订单列表,购物车等方法时将跳转到京东app并打开对应的界面.

 */

@property (nonatomicassign)BOOL isOpenByH5;

 

/**

 *  打开京东后显示的返回按钮的tagID

 **/

@property (nonatomiccopyNSString *JDappBackTagID;

 //设置打开APP返回的ID(打开jd APP之后 ,可以设置显示直接返回到第三方应用标签),需邮件提供appkey、返回键名称、bundleId申请,kepler-support@jd.com



添加到购物车范例:

  NSArray *skuListArray = @[];

  NSArray *numListArray = @[];

    [[KeplerApiManager sharedKPServiceaddToCartWithSkuList:skuListArray numList:numListArray sourceController:self success:^{

        NSLog(@"添加成功");

    } failure:^(NSError *error) {

       

        NSInteger code = error.code;

        switch (code) {

            case 1003//token不存在

            case 1004//token过期

            case 1022//缺少token参数

                //需先调用登录授权接口,成功后再调用该添加购物车方法.

                break;

            case 8969//购物车商品达到最上限

                break;

            case 500//添加失败

                break;

            case 1005//app_key不存在

            case 1020//缺少app_key参数

                break;

            case 3038//系统错误

                break;

            default:

                break;

        }

}]; 

 

主要返回code列表:

 


联盟一键加购

/**

 联盟一键加购

 

 @param unionID 联盟ID

 @param webId AppID 查看位置:我的推广-推广管理-APP管理

 @param skuID 商品SKU

 @param refer refer (原生页面传域名+文章编号)

 @param viewController 当前的视图控制器

 @param completionHandler 返回

 */

- (void)keplerFastPurchaseWith:(NSString *)unionID

                         appID:(NSString *)appId

                         skuID:(NSString *)skuID

                         refer:(NSString *)refer

                    controller:(UIViewController *)viewController

completion:(keplerCompletionHandler)completionHandler;

 

 

例子:

 

 

 

批量加车,支持分佣功能

/**

 批量一键加购

 

 @param unionID

 @param appID AppID 查看位置:我的推广-推广管理-APP管理

 @param skuIDs 商品SKU数组

 @param skuCounts 商品SKU对应的数量

 @param refer refer (原生页面传域名+文章编号)

 @param viewController 当前的视图控制器

 @param completionHandler 返回

 */

- (void)keplerFastPurchaseWith:(NSString *)unionID

     appID:(NSString *)appID

     skuIDs:(NSString *)skuIDs skuCounts:(NSString *)skuCounts

     refer:(NSString *)refer

controller:(UIViewController *)viewController

                    completion:(keplerCompletionHandler)completionHandler

 

 

实例

 

NSString *unionID = @"1000604965"; //unionid1000604965 联盟ID1000072052

    NSString *webid = @"1000876888";//webId 1000876888 webId1431588414  webId1483899001

    NSString *skuIDs = @"44492363307,8179408,35337221431";

    NSString *skuCounts = @"1,2,3";

    NSString *refer = @"https://item.m.jd.com/product/3195185.html";//referer 传当前调用加车接口的页面地址

 

    [[KeplerApiManager sharedKPService] keplerFastPurchaseWith:unionID appID:webid skuIDs:skuIDs skuCounts:skuCounts refer:refer controller:self completion:^(BOOL result, id  _Nullable responseObject, NSError * _Nullable error) {

        

        NSLog(@"response = %@",responseObject);

    }];



// 打开京喜商详接口,3.2.0版本新增,使用了3.0.0版本打开京喜商详功能的需替换成以下方法

- (void)openJXItemDetailWithSKU:(NSString *)sku

                           sourceController:(UIViewController *)sourceController

                                       jumpType:(NSInteger)jumpType

                                           userInfo:(NSDictionary *)userInfo;


示例:

返回键信息通过配置userInfo参数,对应参数如上图


基础API

可自由调用的数据接口