文档

支持

Push Notifications

Push Notifications

故障排除技巧

Resolve common issues with Firebase settings, dependencies, and SDK integration.
阅读时间4 分钟最后更新于 1 个月前

如果在使用 Push Notifications SDK 时遇到任何问题或错误,应参考以下常见的故障排除技巧。 有些故障排除技巧可能会提及特定的常见错误。但是,即使您没有遇到这些问题,仍然建议您按顺序查看。

1.(Android) 在 Push Notifications(推送通知)设置中验证您的 Firebase 值

在使用 Push Notification SDK 期间,如果您尝试将测试设备注册到 Firebase 时遇到问题,可能是因为您的 Firebase 值为空或无效。 您可以在 Push Notifications Settings(推送通知设置)细分段中查看如何添加 Firebase 详细信息。 或者,如果您确定提供的值正确无误,请确认值的后面没有空格/空白。这是一种导致问题的已知原因。

2.(EDM4U/MDR) 验证是否已解析 Push Notifications SDK 的依赖项

External Dependency Manager for Unity (EDM4U) 支持部分所述,Push Notifications SDK 不需要也不会捆绑 External Dependency Manager for Unity (EDM4U) 或 Mobile Dependency Resolver (MDR) 来解析其自己的依赖项。但是,如果使用了这两者之中的任何一个,则 Push Notifications SDK 会与它们集成在一起。 如果任何其他包也不需要 EDM4U 或 MDR,建议卸载它们 否则,我们建议您按照以下步骤操作:
  1. 确认已生成依赖项文件
    PushSDKDependencies.xml
    。将此文件放在自动生成的
    Assets/Push Notifications/Editor/Android
    目录下。
    • 如果此文件不存在,请重新打开您的 Unity 项目。在这个过程期间应该会生成此文件。
  2. 使用
    Resolve
    Force Resolve
    选项,这两个选项都位于 Assets(资源)> External Dependency Manager > Android Manager 下。
  3. 使用
    Display Libraries
    选项确认已解析 Push Notifications SDK 的依赖项,该选项也位于 Assets(资源)> External Dependency Manager > Android Manager 下。应该会显示以下行:
    implementation 'com.google.firebase:firebase-messaging-ktx:22.0.0' // Assets/Push Notifications/Editor/Android/PushSDKDependencies.xml:9
    • 请注意,如果其他包或 SDK 使用同样的依赖项,则以上行旁边的注释可能略有不同。

3.(Android) 确认 Minify(缩小)功能在构建过程中未排除 Push Notifications SDK

如果您已完成 EDM4U/MDR 故障排除部分,但仍然收到类似于以下错误的信息:
java.lang.ClassNotFoundException: com.unity.services.pushnotifications.android.UnityCallbackClass
检查 Player Settings(播放器设置)> Publishing(发布)> Minify(缩小) 下的 Minify(缩小)选项。如果勾选了
Release
Debug
复选框,则表示会使用 Minify(缩小),这种情况下可能会在缩小过程从发布/调试构建中移除 Push Notifications SDK,因此会导致“class missing(类缺失)”错误。
如果您不需要 Minify(缩小),可以将其关闭来解决这一问题。 如果要继续使用 Minify(缩小),则需要在自定义 proguard 文件下添加 Push Notifications 类,以防止在缩小过程中排除 Push Notifications SDK 功能。 Player Settings(播放器设置)> Publishing(发布)> Build(构建)> Custom Proguard File(自定义 Proguard 文件) 下启用
Custom Proguard File
img.png

img.png

打开在指定路径下创建的文件,并附加以下行:
-keep class com.unity.services.pushnotifications** { *;}
这样应该可以解决问题。

4. (iOS) 确保在 XCODE 中启用远程通知

为了使 iOS 应用能够接收推送通知,需要授予
Remote Notifications
功能。
如果不执行此操作,您的应用将出现以下错误:
Failed to register for remote notifications: no valid “aps-environment” entitlement string found for application
转到 Signing & Capabilities(签名和功能)> Capability(功能)> Background Modes(后台模式)> Remote Notifications(远程通知) 以提供
Remote Notifications
功能。

5.在 Unity Dashboard(Unity 后台)的 Push Notifications(推送通知)设置下检查您的 API 密钥

要向终端用户设备发送推送通知,请将您的 Google 密钥和 Apple 密钥添加到 Unity Dashboard(Unity 后台)的
Settings
中,位于 LiveOps > Push Notifications 下。
您可以在此处找到添加 Google 密钥的指南,在此处找到添加 Apple 密钥的指南。 对于 iOS,请确保您的密钥与目标构建版本匹配。对于调试构建,请将
Sandbox
选项设置为
True
,而对于生产构建,请将其设置为
False
。如果密钥和构建版本不匹配,测试设备将不会收到通知。
按照测试指南检查密钥是否有效。