Unity iOS集成FCM获取Token报错:未指定APNs Token
解决Unity iOS获取FCM Token时的APNS Token缺失问题
核心配置与修复步骤
Xcode推送权限与能力配置
- 打开Unity导出的Xcode工程,在
Info.plist中添加推送权限说明:
新增NSUserNotificationUsageDescription和NSRemoteNotificationUsageDescription字段,分别填写向用户申请推送权限的文案(比如"需要推送权限接收消息通知")。 - 在Xcode的
Signing & Capabilities面板中,确认已添加Push Notifications能力,同时检查Background Modes下的Remote notifications子选项是否勾选(你已开启后台模式,需确认这个关键子项)。
- 打开Unity导出的Xcode工程,在
Unity代码中先获取并传递APNS Token
报错的核心原因是FCM必须先拿到APNS Token才能生成自身的FCM Token,需调整代码逻辑,先请求用户推送权限、获取APNS Token后再调用Firebase的接口。示例代码:using UnityEngine; using Firebase.Messaging; using UnityEngine.iOS; public class FCMTokenManager : MonoBehaviour { void Start() { // 请求推送权限 NotificationServices.RegisterForNotifications(NotificationType.Alert | NotificationType.Badge | NotificationType.Sound); // 监听APNS Token获取事件 NotificationServices.deviceTokenReceived += OnAPNSTokenReceived; } void OnAPNSTokenReceived(string token) { // 将APNS Token传递给Firebase FirebaseMessaging.APNSToken = token; // 调用获取FCM Token方法 FetchFCMToken(); } async void FetchFCMToken() { try { string fcmToken = await FirebaseMessaging.GetTokenAsync(); Debug.Log("FCM Token获取成功: " + fcmToken); } catch (System.Exception e) { Debug.LogError("FCM Token获取失败: " + e.Message); } } }验证Firebase配置文件
确保Unity工程中已导入从Firebase控制台下载的GoogleService-Info.plist,且该文件在Xcode工程中被正确包含(Unity导出时通常自动处理,可手动检查Xcode工程文件列表)。
额外检查项
- 确认Apple开发者账号已为当前App ID开启推送服务,且上传到Firebase的APNs密钥与该App ID、测试环境(开发/生产)完全匹配。
- 测试时使用对应环境的设备:开发环境用调试证书,生产环境用发布证书,环境不匹配会导致Token获取失败。
内容的提问来源于stack exchange,提问作者docchang
相关产品推荐
相关产品推荐

