常见问题

更新时间:2023-06-05 02:49:25下载pdf

各类版本问题

1. Xcode 11 为什么找不到 Application Loader?

从 Xcode 11 开始,不再内置 Application Loader。苹果官方推出了一个新的 ipa 上传工具,您可以直接在 Mac 应用商店搜 Transporter 进行 ipa 上传。

2. 执行 pod install 为什么会报错?

请确认 CocoaPods 是 1.3.0 及以上版本,执行 pod --version 命令可查看版本。

3. 执行 pod install 时,为什么提示 CDN: trunk Repo update failed / trunk URL couldn't be downloaded

CocoaPods 1.8.0 版本默认使用 CDN Repo 源。详情请访问 CocoaPods

如果您因为网络原因无法访问源,可以编辑 Podfile 修改为之前的 Master Repo:

- source 'https://cdn.cocoapods.org/'
+ source 'https://github.com/CocoaPods/Specs.git'

4. iOS 12 使用 [[ThingSmartActivator sharedInstance] currentWifiSSID] 为什么无法获取到 SSID?

在 Xcode 10 中,获取 Wi-Fi 信息需要开启相关权限。解决方法:Xcode > [Project Name] > Targets > [Target Name] > Capabilities > Access WiFi Information > ON

常见问题

5. iOS 13 版本有哪些 SDK 权限变化?

详情请参考 iOS 版本适配

6. 为什么升级 SDK 至 2.8.0 及以上版本,SDK 初始化后发生 App 闪退?

SDK 2.8.0 版本之后加入了安全图片校验,并启用了新的 AppKeyAppSecret。如果发生了 App 闪退,并提示 Terminating app due to uncaught exception 'start sdk error', reason: 'security image not found',请按照 准备工作 前往涂鸦 IoT 平台重新生成 SDK 初始化所需文件。

SDK 使用问题

1. 下发控制指令,设备为什么没有上报状态?

请确认设备功能的数据类型是否正确。例如,如果设备功能的数据类型是数值型(Value),那控制命令发送的应该是 @{@"2": @(25)} 而不是 @{@"2": @"25"}

2. 如何开启调试模式,打印日志?

请在初始化 SDK 之后,调用以下代码:

[[ThingSmartSDK sharedInstance] setDebugMode:YES];

3. 基于 SDK 开发的 App,上传了推送证书,为什么收不到推送信息?

  1. 确认 Xcode 的 Push Notification 是否打开。
  2. 涂鸦 IoT 平台 上传 Push 证书。
  3. didFinishLaunchingWithOptions 方法中初始化 Push 方法。
  4. 涂鸦 IoT 平台营销推送 页面,新建 App 消息推送。

更多详情,请参考 集成 Push

4. 为什么 SDK 获取本地语言为英文,而不是手机系统的语言?

因为 SDK 现在获取的本地语言是根据 [[NSBundle mainBundle] preferredLocalizations] 获取的,您需要在工程中创建多语言显示。

5. SDK 是否支持红外设备控制?

现在 SDK 不支持红外设备控制。

6. 为什么设备控制合并发送了多个设备功能(dps),却没有收到所有的设备功能响应?

设备控制发送多个功能时,您需要先判断设备功能是否有冲突。建议将没功能冲突的功能放在一起发送。例如照明的设备:

  • 可以把灯的亮度、冷暖设备功能放在一起发送。
  • 不可以把开关、亮度,冷暖 3 个设备功能放在一起,否则会存在有些设备功能执行没有响应的问题。

7. 如果没有蓝牙功能,是否可以不依赖 SDK 蓝牙模块,减少包大小?

可以的。此时只需要设备配网和控制功能,可以只依赖以下两个模块:

# 家庭管理,设备,房间,群组管理相关功能
pod 'ThingSmartDeviceKit',
# 设备配网相关功能
pod 'ThingSmartActivatorKit',

以下模块可以根据您的实际需要引用:

# 单点蓝牙相关功能
pod 'ThingSmartBLEKit',
# sigMesh 相关功能
pod 'ThingSmartBLEMeshKit',
# 智能场景相关功能
pod 'ThingSmartSceneKit',
# 设备和群组定时相关功能
pod 'ThingSmartTimerKit',
# 消息中心相关功能
pod 'ThingSmartMessageKit',
# 问题反馈相关功能
pod 'ThingSmartFeedbackKit',

SDK 运行报错

1. SDK 为什么集成错误,显示 Undefined symbols xxx

一般是由于引用的 SDK 各个组件版本不一致导致。

请确认引用的每个库是否都是统一版本,即版本号的最高位和中位一致,例如 v3.12.1 和 v3.12.5 是统一的版本。如果不是,使用 pod update 进行更新后,重新编译即可。

2. 为什么调用 SDK 接口以后,会报 Error Domain=NSURLErrorDomain Code=-999 "已取消" 的错误?

请确认请求的对象是全局变量,否则会被提早释放,例如 self.feedBack = [[ThingSmartFeedback alloc] init];

3. 为什么提示签名错误?

请确认 bundleIdappKeyappSecret安全图片 是否与 涂鸦 IoT 平台 上的信息一致,任意一个不匹配都将校验失败。更多详情,请参考 准备工作

4. Demo 编译为什么失败,提示 library not found for -XXX

请确认您打开的工程为 .xcworkspace 而不是 .xcproject

5. M1 芯片的电脑编译 iOS 为什么报错 Undefined symbols for architecture arm64

报错示例

Undefined symbols for architecture arm64:
"OBJC_CLASS$ThingAudioEngine", referenced from:
objc-class-ref in ThingSpeechKit(ThingSpeechVADetector.o)
"OBJC_CLASS$ThingSceneIntent", referenced from:
objc-class-ref in ThingSiriShortcutModule(ThingSceneShortcutManager.o)
"OBJC_CLASS$_DWKWebView", referenced from:
objc-class-ref in ThingHybridContainer(ThingHybridContainerVC.o)
ld: symbol(s) not found for architecture arm64.

解决方法

  1. 在 Podfile 文件里添加以下代码。

    post_install do |installer|
        installer.pods_project.build_configurations.each do |config|
            config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
        end
    end
    
  2. 在 XCode 的 Build Settings > Excluded Architectures 路径下,增加 Any iOS Simulator SDK 选项,值为 arm64

  3. 重新执行 pod install