Skip to content
Vajra Sheng edited this page Oct 13, 2020 · 21 revisions

常见问题

1.iOS使用SDK时,出现支付后不能返回APP

请参考接入指南,配置 app scheme.

2.iOS点击去支付无法跳转到对应客户端(微信、支付宝)

首先确认用户设备是否安装相应客户端,其次确认 shouldStartLoadWithRequest 里是否拦截微信/支付宝的scheme,最后确认工程是否加了微信/支付宝scheme白名单。

3.iOS SDK 是否支持 ATS ?

5.x以上版本全部走https

4.iOS SDK 调用注册接口报错 [__NSDictionaryM addYZObject:forKey:]: unrecognized selector sent to instance xxxxxxxxxxxxxx

需要在Other Linker Flags里加上-ObjC

5.登陆后无法进入商品详情页, 总是回跳到登陆界面

1.不要用unsuggest去处理登录,这个类只限于demo使用

2.登录需要你们自行代码实现,按文档操作https://www.youzanyun.com/docs/guide/appsdk/683

6.APP里有设置webview的UA,会和有赞的UA冲突吗?

在设置有赞的UA之前,先设置下APP自己的UA,然后测试是否影响业务流程

1.是否影响有赞的流程,有赞页面能正确请求登陆就不影响有赞流程

2.是否影响APP自身的流程,要自行测试逻辑

7. iPhoneX上商品详情页的购买按钮浮起, 如何适配?

包含YZWebView的整体页面做好SafeArea适配即可,示例代码如下:

CGRect originFrame = self.webView.frame;
if (@available(iOS 11.0, *)) {
    CGFloat bottom = [[[[UIApplication sharedApplication] delegate] window] safeAreaInsets].bottom;
    if (bottom > 0) {
        // iPhone X Series
        self.webView.frame = CGRectMake(originFrame.origin.x, originFrame.origin.y, originFrame.size.width, originFrame.size.height - bottom);
    }
}

8. 为什么库的体积这么大?

两点原因。

  1. 我们开启了 BitCode.
  2. 库中的二进制文件包含了 armv7, arm64, x86_64 架构。

第一点有助于发往 App Store 的安装包优化和瘦身。但是也导致您下载到的 framework 包大小翻倍。(放心,用户真正安装的时候,包大小是非常小的。) 详情可以了解一下这里: https://github.com/realm/realm-cocoa/issues/4450

第二点是为了方便您导入和开发,我们将四种架构的二进制合并在一个文件中。真正打包 ipa 上传 app store 的时候,Xcode 会帮我们去掉不需要的 x86_64 架构(模拟器)的二进制。用户真正下载使用您 app 的时候,app store 只会分发对应架构的机型的安装包。

9. access_token 过期了怎么办?

access_token 的有效期为 7 天。在有效期内,SDK 会自动延长有效期。当用户超过 7 天没有访问有赞相关的内容,会导致 access_token 过期。 access_token 过期后,通过监听 YouzanNotice 中的 YouzanNoticeLogin,前往你的后台服务器获取最新的 access_token 并同步给 YZSDK 即可刷新 access_token 的有效期。

10. Library not loaded

出现了Library not loaded错误怎么办?

**dyld: Library not loaded: @rpath/YZBaseSDK.framework/YZBaseSDK**
**Reason: image not found**
  1. 检查 embedded binaries 是否已经添加了 YZSDKCore.framework 、YZBaseSDK.framework 或者
  2. 使用 Cocoapods 安装 SDK.

11. 崩溃日志里看到 WebCore OpenGL ES 相关的内容,怎么解决?

如果在crash收集服务中看到 gpus_ReturnNotPermittedKillClient 相关的 crash 报告,这是由于系统的机制引起的,可以参考以下讨论解决:

12. pod 搜索不到最新的 SDK 呀?

那是因为你的电脑本机的 pod repo 没有更新。运行 pod repo update 即可。

13. WKWebViewType 调用 goBack 方法会不触发 didFinished 回调, 而是触发 didFailed 回调,怎么解决?

参见: https://stackoverflow.com/questions/13860401/ignoring-nsurlerrordomain-error-999-does-not-work-in-uiwebview http://www.xsffmy.com/p/3d9ba7e6d42f?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation https://www.jianshu.com/p/cbd866e59db0

14. Symbol(s) not found for architecture i386?

i386 架构用于 iPhone 5 及以下模拟器。目前的环境中,这类机器已经非常少,如真的有兼容性测试的需要,用真机测试方能更好地保证正确兼容。为了缩小体积,我们的 framework 包不包含 i386 架构支持。 使用 iPhone 5s 及以上的模拟器运行即可。

15. 点击分享按钮没有弹出分享。

点击分享按钮后,SDK 会将页面相关信息返回到应用中。应用开发者需要自行实现分享的 UI。 监听一下消息即可获取分享相关信息:

- (void)webView:(YZWebView *)webView didReceiveNotice:(YZNotice *)notice
{
    switch (notice.type) {
        case YZNoticeTypeShare: // 收到分享的回调数据
        {
            [self alertShareData:notice.response];
            break;
        }
}

16. 上传到 AppStore 的过程中出问题了?

https://github.com/youzan/YouzanMobileSDK-iOS/wiki/%E6%8E%A5%E5%85%A5%E6%8C%87%E5%8D%976.x

17. 如何获取页面的标题:

可以通过 js 获取 document.title

- (void)webViewDidFinishLoad:(id<YZWebView>)webView {
    [webView evaluateJavaScript:@"document.title"
              completionHandler:^(id  _Nullable response, NSError * _Nullable error) {
                  self.navigationItem.title = response;
                  NSLog(@"TITLELLL: %@",response);
              }];
}

18. 分期支付等业务获取相册图片或者视频拍摄闪退注意事项

iOS系统默认支持H5 标签拍照、拍视频或者选取照片或视频,但是需要在宿主App中注意对应权限点说明的文案设置,否则会出现闪退。

  • 相册 NSPhotoLibraryUsageDescription
  • 相机 NSCameraUsageDescription
  • 麦克风 NSMicrophoneUsageDescription