Skip to content

APPSDK 6.x 迁移指南

Sheng Pan edited this page Dec 18, 2017 · 6 revisions

APPSDK 6.x 迁移指南

阅读对象

正在使用 AppSDK 5.x 用户。

简述

AppSDK 6.x 通过提供 YZWebView ,简化了 SDK 的使用和接入,并优化了 WebView 的加载速度。同时接口更清晰,更稳定。

用户可以选择整体迁移至 6.x,或以兼容的方式使用 6.x 版本的 SDK. 6.x 版本的 SDK 对 5.x 的接口做了兼容,用户只需导入 AppSDK 便可无缝升级。

❗️5.x 的兼容接口保留到2017年12月31日,之后不再维护,推荐用户尽快整体迁移至 6.x 版本。

整体迁移

请根据接入指南6.x进行接入,之后参考 Demo 使用更新你的代码。其关键点如下:

初始化

原始初始化方式:

[YZSDK setUpWithClientId:CLIENT_ID];

替换为新的初始化方式:

    YZConfig *config = [[YZConfig alloc] initWithClientId:kClientID];
    NSString* scheme = [[[NSBundle mainBundle].infoDictionary[@"CFBundleURLTypes"] firstObject][@"CFBundleURLSchemes"] firstObject];
    config.scheme = scheme;
    config.enableLog = YES;
    [YZSDK.shared initializeSDKWithConfig:config];

替换 UIWebView

YZWebView 的接口和 UIWebView 保持一致,用户只需替换类名即可。

替换 Notice 监听方法

老的监听方式:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    
    BOOL should = [YZSDK webView:webView shouldStartLoadWithRequest:request navigationType:navigationType];
    if (!should) {
        return NO;
    }
    NSURL *url = [request URL];
    
    YZNotice *noticeFromYZ = [YZSDK noticeFromYouzanWithUrl:url];
    if(noticeFromYZ.notice & YouzanNoticeLogin) {//登录
    } else if(noticeFromYZ.notice & YouzanNoticeShare) {//分享
    } else if(noticeFromYZ.notice & YouzanNoticeReady) {//有赞环境初始化成功,分享按钮可用
    } else if (noticeFromYZ.notice & IsYouzanNotice) {
    }
    return YES;
}

替换为新的监听方式:

// 实现 YZWebViewDelegate 即可, YZWebView 会在适当的时机调用
- (void)webView:(YZWebView *)webView didReceiveNotice:(YZNotice *)notice
{
    switch (notice.type) {
        case YZNoticeTypeLogin: // 收到登陆请求
        {
            [self showLoginViewControllerIfNeeded];
            break;
        }
        case YZNoticeTypeShare: // 收到分享的回调数据
        {
            [self alertShareData:notice.response];
            break;
        }
        case YZNoticeTypeReady: // Web页面已准备好,可以调用分享接口
        {
            self.navigationItem.rightBarButtonItem.enabled = YES;
            break;
        }
        default:
            break;
    }
}

替换分享调用

原始分享调用方式:

[YZSDK shareActionWithUIWebView:self.webView];

切换为新的分享调用方式:

[self.webView share];

新增接口

YZSDK 新增一个代理接口,需要接入才可启用页面加载加速能力。

YZSDK.shared.delegate = self;


- (void)yzsdk:(YZSDK *)sdk
needInitToken:(void (^)(NSString * _Nullable))callback
{
    // 调用有赞云的初始化Token接口并返回 token. 见:https://www.youzanyun.com/docs/guide/3400/3466
    // 注意,下面的代码只是做为演示,请不要使用 UnsuggestMethod。
    [UnsuggestMethod loginWithOpenUid:[UserModel sharedManage].userId
                      completionBlock:^(NSDictionary *info) {
                          callback(info[@"access_token"]);
                      }];
}

兼容迁移

请根据接入指南6.x进行接入即可。原有代码可以继续运行。您可以抽空进行整体迁移。

关键点:将 YZSDKCore 添加到 Embeded Frameworks 中。