如何解决"远程通知注册失败",在'Unity Cloud Build'构建的iOS游戏上接收推送通知



我们使用适用于Android和iOS的"Unity cloud build"服务构建我的项目,使用Firebase作为我们的后端。最近,我们决定在我们的项目中添加"推送通知"功能,以增强用户体验。

我开始测试事情,看看整个事情是如何工作的,我添加了Firebase消息包和标准的"官方"代码来接收和保存令牌。我还使用"Firebase 函数"制作了一些"发送者"代码来发送测试通知。

Android版本没有问题,它立即工作。它收到了令牌,每当我使用该令牌发送测试通知时,通知都会立即弹出,没有问题。

但是我们在iOS版本上遇到了一些问题!没用!问题所在非常模糊,我使用谷歌找不到任何类似的问题!!我们花了很多时间来调整 .p12 以及配置文件和 .p8 文件(用于与 Firebase 的 APN 连接),它们看起来都很好,我们不确定问题是否存在!

这是iOS版本的行为方式:

  1. 日志显示设备连接到 FCM 并收到了令牌,但紧跟在该行之后,始终存在错误行:Failed to register for remote notifications

  2. 当我向该令牌发送消息时,它不会显示任何通知,仅在日志中,我可以看到以下内容:FCM: Received message

另外,这是我在 Unity 上用于启用远程通知的 iOS 设置: 图像

这是我在 Unity 云构建上的构建后脚本

using UnityEngine;
using UnityEditor;
using UnityEditor.Callbacks;
using System.Collections;
using UnityEditor.iOS.Xcode;
using System.IO;
public class BuildSettings
{
[PostProcessBuild]
public static void OnPostprocessBuild(BuildTarget buildTarget, string path)
{
if (buildTarget != BuildTarget.iOS)
return;
string projectPath = path + "/Unity-iPhone.xcodeproj/project.pbxproj";
PBXProject project = new PBXProject();
project.ReadFromFile (projectPath);
string targetGuid = project.TargetGuidByName(PBXProject.GetUnityTargetName());
project.AddCapability(targetGuid, PBXCapabilityType.PushNotifications);
project.AddFrameworkToProject(targetGuid, "CoreBluetooth.framework", false);
project.AddFrameworkToProject(targetGuid, "UserNotifications.framework", false);
File.WriteAllText (projectPath, project.WriteToString ());
var plistPath = Path.Combine(path, "Info.plist");
var plist = new PlistDocument();
plist.ReadFromFile(plistPath);
plist.root.SetString("NSBluetoothPeripheralUsageDescription", "Bluetooth connection message!");
plist.WriteToFile(plistPath);
}
}

谢谢。

进一步的调查显示,问题出现在缺少 aps 环境授权的情况下,如果您使用 Xcode 或云构建,将此授权添加到 iOS 构建的过程会有所不同。

您可以在此处找到解决方案:https://forum.unity.com/threads/how-to-put-ios-entitlements-file-in-a-unity-project.442277/

相关内容

  • 没有找到相关文章

最新更新