1. 开始使用 - xiaoeteam/XiaoeAppSDK-iOS GitHub Wiki

1. 简述

小鹅通 App SDK 是为移动端应用打造的在线店铺交易系统,通过一个 SDK 便可以在 App 内集成小鹅通提供的整个店铺服务,实现静默登录, 跳转支付等功能来实现 App 端的交易闭环。

2. 快速体验

开发者通过 demo 来快速了解 SDK 的使用, 点击下载demo

3. 运行环境

• Xcode 9.0 或更高版本(建议使用最新版本)。

4. 接入

详细的接入指南请查看:

iOS 接入指南

5. 使用

小鹅通 SDK 依托于 XEWebView 来进行页面展示。类似 WKWebView, 传入店铺页面地址,就可以进行完整的商品展示购买流程。具体可参考 DEMO。

5.1 初始化 SDK

使用 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];

5.2 界面展示

使用 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];

5.3 登录态同步

当遇到需要登陆才可以访问的页面时,会触发下面的回调,此时去获取登录态信息,并同步给 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;
    }
}

5.4 认证

5.4.1 同步认证信息

登录后获取认证信息。 同步给 SDK 的方法如下:

- (void)synchronizeCookieKey:(nullable NSString *)key
                   cookieValue:(nullable NSString *)value;

5.4.2 清除认证信息

在三方 App 内发生用户切换或用户退出的时, 为了避免出现客户信息混乱, 请务必执行如下代码登出小鹅通用户角色.

代码示例:

- (void)logout;

5.5 页面分享

如需要获取页面的分享信息, 需要调用 XEWebView 的 -share 方法来触发分享事件:

- (void)share;

触发分享操作后, XEWebView 会异步调用 webView:didReceiveNotice: 代理方法,XENotice 的 response 会包含分享需要的各种信息。

并不是所有可见页面都能触发分享. 没有回调则代表该页面不可分享。

5.6 日志开关

SDK 提供了日志功能,默认日志为关闭状态. 开发者可以通过 XEConfig 中的设置打开日志开关.

// 是否开启控制台日志输出,默认为NO。仅在 DEBUG 模式下有效
@property (nonatomic, assign) BOOL enableLog; 

6. 常见问题

点击查看常见问题

⚠️ **GitHub.com Fallback** ⚠️