管理平台

iOS SDK 集成文档

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

 

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

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

2) 下载客户端SDK

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

 

2、客户端SDK加入工程

SDK文件夹包含JDKeplerSDK.frameworkKepler.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 SchemeCFBundleURLSchemes的内容为 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>sdkbackCF4FF0FBD617466C04D977EDDA69EFA6</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中安全图片的内容或者名称也会导致注册失败。

 

2SSO授权登录回调场景使用(必须调用,如果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);

    }];


基础API

可自由调用的数据接口