常见问题

更新时间:2024-06-06 06:05:58下载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 版本适配

SDK 使用问题

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

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

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

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

[[ThingSmartSDK sharedInstance] setDebugMode:YES];

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

  1. 确认 Xcode 的 Push Notification 是否打开。
  2. 涂鸦开发者平台 上传 Push 证书。
  3. didFinishLaunchingWithOptions 方法中初始化 Push 方法。
  4. 涂鸦开发者平台营销推送 页面,新建 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安全图片 是否与 涂鸦开发者平台 上的信息一致,任意一个不匹配都将校验失败。更多详情,请参考 准备工作

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