1. 开始使用 - xiaoeteam/XiaoeAppSDK-iOS GitHub Wiki
小鹅通 App SDK 是为移动端应用打造的在线店铺交易系统,通过一个 SDK 便可以在 App 内集成小鹅通提供的整个店铺服务,实现静默登录, 跳转支付等功能来实现 App 端的交易闭环。
开发者通过 demo 来快速了解 SDK 的使用, 点击下载demo。
• Xcode 9.0 或更高版本(建议使用最新版本)。
详细的接入指南请查看:
• iOS 接入指南
小鹅通 SDK 依托于 XEWebView 来进行页面展示。类似 WKWebView, 传入店铺页面地址,就可以进行完整的商品展示购买流程。具体可参考 DEMO。
使用 SDK 前需要先初始化。
/* 以下为小鹅通内嵌店铺SDK初始化代码段 */
/// 初始化配置
/// clientId 从小鹅通申请的 Client ID
/// appId 从小鹅通申请的店铺 Id
/// scheme 当前接入APP的唯一url scheme值
/// enableAppPayment 是否开启APP支付控制 ,默认不开启
/// disableAppPaymentTypes 如果enableAppPayment为YES,可通过该属性独立控制限制相关类型的商品走APP支付
/// enableLog 是否开启APP日志打印,默认不开启
XEConfig *config = [[XEConfig alloc] initWithClientId:DefaultClientId
appId:DefaultAppId
scheme:@"app-unique-scheme"
enableAppPayment:NO
disableAppPaymentTypes:XEConfigDisableAppPaymentType_None
enableLog:YES];
[XESDK.shared initializeSDKWithConfig:config];
使用 XEWebView 来展示店铺界面
// 初始化 XEWebView
self.webView = [[XEWebView alloc] initWithFrame:webFrame];
self.webView.delegate = self;
self.webView.noticeDelegate = self;
[self.view addSubview:self.webView];
// 加载链接
[self.webView loadRequest:urlRequest];
当遇到需要登陆才可以访问的页面时,会触发下面的回调,此时去获取登录态信息,并同步给 SDK。
#pragma mark - XEWebViewNoticeDelegate
- (void)webView:(id<XEWebView>)webView didReceiveNotice:(XENotice *)notice
{
switch (notice.type) {
case XENoticeTypeReady:
{
// Web页面加载完成回调,APP端按需处理
// 例如:此时可以分享,但注意此事件并不作为是否可分享的标志事件
self.navigationItem.rightBarButtonItem.enabled = YES;
}
break;
case XENoticeTypeLogin:
{
// SDK需要登录态通知回调 (APP端需要接入小鹅登录态API流程)
// 小鹅登录态接入流程文档 https://admin.xiaoe-tech.com/helpCenter/problem?first_id=241&second_id=242&document_id=doc_5dca0f61d8b1c_jYm6p
}
break;
case XENoticeTypeShare:
{
// 当前网页分享内容结果回调 (需先触发webview的share方法)
NSDictionary *dict = (NSDictionary *)notice.response;
NSString *content = [[NSString alloc] initWithFormat:@"%@", dict];
[self showAlertTitle: @"分享信息" content: content];
NSLog(@"Notice: XENoticeTypeShare = %@", dict);
if ([notice.response isKindOfClass:[NSDictionary class]]) {
NSString *str = dict[@"share_link"];
NSLog(@"yes: %@", str);
}
}
break;
case XENoticeTypeTitleChange:
{
// 网页标题改变回调,APP端按需处理
NSDictionary *param = notice.response;
if ([param isKindOfClass:[NSDictionary class]]) {
NSString *title = param[@"title"];
}
}
break;
case XENoticeTypeLoadProgressChange: {
// 网页加载进度
NSDictionary *param = notice.response;
if ([param isKindOfClass:[NSDictionary class]] && [param[@"estimatedProgress"] isKindOfClass:[NSNumber class]]) {
CGFloat estimatedProgress = [param[@"estimatedProgress"] floatValue];
}
}
break;
case XENoticeTypeOutLinkUrl:
{
// 外部链接回调,APP端按需处理,规则为带参数 needoutlink=1 的链接,例:https://xiaoe-tech.com/?needoutlink=1
NSDictionary *param = notice.response;
NSLog(@"自定义链接: %@", param);
}
break;
case XENoticeTypeAppPay:
{
//需要APP自行控制支付
NSDictionary *param = notice.response;
NSLog(@"待支付订单相关信息: %@", param);
}
break;
default:
break;
}
}
登录后获取认证信息。 同步给 SDK 的方法如下:
- (void)synchronizeCookieKey:(nullable NSString *)key
cookieValue:(nullable NSString *)value;
在三方 App 内发生用户切换或用户退出的时, 为了避免出现客户信息混乱, 请务必执行如下代码登出小鹅通用户角色.
代码示例:
- (void)logout;
如需要获取页面的分享信息, 需要调用 XEWebView 的 -share
方法来触发分享事件:
- (void)share;
触发分享操作后, XEWebView 会异步调用 webView:didReceiveNotice:
代理方法,XENotice 的 response 会包含分享需要的各种信息。
并不是所有可见页面都能触发分享. 没有回调则代表该页面不可分享。
SDK 提供了日志功能,默认日志为关闭状态. 开发者可以通过 XEConfig 中的设置打开日志开关.
// 是否开启控制台日志输出,默认为NO。仅在 DEBUG 模式下有效
@property (nonatomic, assign) BOOL enableLog;