跳到主要内容

iOS 常见问题

为什么 iOS AppDelegate 的回调方法无法被调用到?

典型场景如下:

  • Facebook app 授权登录后,无法调用到 AppDelegate 的 OpenURL 方法。
  • Firebase SDK 的自动方法交换失效,无法调用到 AppDelegate 的 didRegisterForRemoteNotificationsWithDeviceToken 方法。
Answer

请检查 iOS App 引入的所有第三方库,是否错误地使用了 Objective-C 的自动方法交换等动态特性,导致 AppDelegate 的回调方法执行链中断。已知 GluAppTracking.framework 有此问题,需根据具体的游戏引擎来解决此问题。

为什么 iOS 端无法收到 Facebook 渠道的 Deferred DeepLink?

Answer

iOS 端需要将 Facebook app 以及游戏本身的广告追踪都打开,才能正常收到 Deferred DeepLink.

如果其一的广告跟踪功能被关闭,Facebook Deferred DeepLink 功能就无法正常使用。

Facebook app 打开广告追踪:

  • 在 Facebook app 弹出 ATT 许可弹窗时点击 允许
  • 或者可手动前往 设置 > 隐私 > 跟踪 然后将 Facebook app 的开关打开。

游戏打开广告追踪:

  • 调用接口 RequestTrackingAuthorization。更多详情,请参见 Unity SDKUnreal Engine SDKRequestTrackingAuthorization 接口。

iOS 打包时报错 "Could not find or use auto-linked library. Undefined symbols for architecture arm64"

Answer

iOS Swift 模块不能直接添加到 Unreal Engine 中,必须修改引擎配置,添加 bridge 桥接层。

更多详情,请参见 Swift SDK 的桥接

iOS app 卡在 logo 页面后崩溃 "Watchdog Violation"

Answer

Watchdog Violation 是 iOS 系统保护,卡死一段时间后杀死进程。崩溃是因为 Unity Mobile Notifications 和 Firebase SDK 不兼容导致的。

可选择移除 Firebase SDK,或根据 Unity Issue Tracker 里的步骤更新 Unity Mobile Notifications。

更多关于错误的信息,请参见 iOS 15 crash with build on Xcode 13

LINE 或 Facebook 登录时无法触发 AppDelegate application:openURL:options 回调,导致登录失败

典型场景如下:

  • LINE web 授权后无法返回游戏。
  • LINE app 授权后返回游戏,渠道报错 Code 3003 (userCancelled)
  • Facebook 拉起 web 页面再跳转到 Facebook app,授权后返回游戏,web 界面无法关闭。
Answer
  • 检查 LINE 和 Facebook 平台的应用配置。
  • LINE 渠道报错 Code 3003 (userCancelled),检查 app 状态,如果为 Developing 模式,则只有渠道管理员和测试人员可以使用 LINE 登录功能。有关添加测试人员的详细步骤,请参见 LINE 应用配置步骤下的 添加用户权限
  • 检查游戏是否手动修改了 Unreal Engine FIOSCoreDelegates::OnOpenURL 的事件定义。如果在 IOSAppDelegate.cpp 中实现了 application:openURL:options 方法,并且通过 FIOSCoreDelegates::OnOpenURL 广播了事件,需要相应地修改 INTLAppDelegate.mm 以便触发 application:openURL:options 的正确调用。

Player Network 是否直接依赖 INTLCore 申请的 iOS 敏感权限?

Answer

权限说明:

  • NSPhotoLibraryUsageDescription - 访问玩家的图库,一般用于选择图片用作玩家头像,或者选择图片/视频来进行分享。
  • NSCameraUsageDescription - 使用拍照功能,一般用于拍照上传用作玩家头像,客服系统里面拍照或者录制视频上传。
  • NSLocationWhenInUseUsageDescription - 获取玩家位置,一般用于寻找附件的玩家。
  • NSPhotoLibraryAddUsageDescription - 往照片库中添加照片,一般用于游戏中保存图片,比如精彩时刻,对局结果等。
  • NSMicrophoneUsageDescription - 使用麦克风/录音功能,一般用于游戏内语音沟通。

Player Network 并不直接依赖这些权限。如果游戏有保存图片到图库,或者读取图库的需求,需要保留 NSPhotoLibraryUsageDescriptionNSPhotoLibraryAddUsageDescription

LI PASS 注销账号在打开 H5 页面后,为什么在上传照片时可以直接访问图库而无需授权?

Answer

H5 选择照片权限和客户端的照片权限是独立的,游戏通过 H5 页面去打开文件,访问照片,不会发起授权弹窗,会直接被赋予私密访问权限而无需授权。

图片: iOS UI