# 接入问题及解答

这里汇总了一些 iOS 接入过程中有可能遇到的常见问题,方便接入过程中排查问题。


# unrecognized selector sent to instance exception

报这个错误时, 需要 Xcode Build Settings 里的 Other Linker Flags 设置值 -ObjC.


# 为什么 SDK 显示的语言和我指定的语言不一致?

正常情况下,接入方可以通过 init 的最后一个参数指定 SDK 的显示语言;如果没有设置,SDK 则会使用设备语言来进行初始化。

同时,为了保证玩家侧的体验,AIHelp 有一套针对初始化语言的矫正逻辑:

1、我们这边会针对不同的标准做矫正,比如 zh / zh-cn / zh-CN / zh_CN / zh-hans 等等,都会被转换为 zh-CN 来进行逻辑处理; 2、如果矫正后的语言没有在后台开启的话,我们会再次矫正为 AIHelp 后台设置的默认语言;

AIHelp 后台设置的默认语言一般为英语,在这种情况下,保底语言就是英语;这个默认语言可以根据咱们这边的具体需求进行调整。

另外需要注意的是,目前 AIHelp API 接收的是 ISO 639-1 语言码,初始化的时候不能传递国家码,因为有可能某个国家码是另外一个语言码:比如 KR 在国家码表示韩国,但是在语言码指代的是卡努里语。

如果当下项目中确实是这么用的,那建议将 ISO-3166 国家码按照 ISO 639-1 做一份映射,然后再将语言码传递给 AIHelp 使用。


# 为什么在客服后台看到的玩家信息为 anonymous 和一串乱码?

默认情况下,在调用 updateUserInfo API 更新用户信息之前,AIHelp 会使用 anonymous 作为用户名,deviceId 作为用户 ID。

同时,在打开 AIHelp 页面之前,UID 的信息都不会同步给后端。UID 是保存在内存中的,所以只要保证打开页面之前能拿到 UID,用户会话就不会出错。

如果客服后台没有设置上,那只能是这个 API 没有被有效调用。

有可能是 updateUserInfo API 的调用时机问题,这个 API 需要在初始化之后调用

AIHelpSupport.init(/* your code here */);
AIHelpSupport.updateUserInfo(/* your code here */);

只需要保证 updateUserInfo 调用在 init 之后就可以,并不依赖初始化成功。

如果更新用户信息早于初始化,就有可能被 return 掉,导致没有设置成功;可以考虑在打开页面之前更新一下用户信息,应该也可以解决问题。


# 为什么 iOS 始终显示为横屏/竖屏?

首先需要确定是否将手机的方向锁定了,重力感应需要开启屏幕自动旋转才能生效;

其次,iOS 屏幕旋转的控制等级是:AppDelegate > 项目配置勾选/info.plist > rootController。所以,当配置勾选或者 info.plist 或者 AppDelegate 不允许多方向的时候,AIHelp 是无法跟随屏幕旋转的。

这边提出的解决方案是:

1、配置勾选多方向去除 info.plist 和 AppDelegate 的方向设置;

2、在游戏的rootController 设置自己想要的方向;

3、AIHelpSDK 就可以根据接入文档设置的方向来正常操作了。


上次更新: 11/17/2023, 4:30:50 AM