【问题标题】:How to prevent Firebase Cloud Messaging ask for push notifications permission on iOS/Unity如何防止 Firebase Cloud Messaging 在 iOS/Unity 上请求推送通知权限
【发布时间】:2020-03-31 13:29:05
【问题描述】:

我一直在 Unity 的一个项目中工作,但我遇到了 iOS 问题。我已经在我的游戏中实现了本地推送通知,它会在游戏后期请求推送通知的权限。在我实施 Firebase Cloud Messaging 之后,这个顺序发生了变化。现在一开始,游戏就要求推送通知。有什么办法可以防止在游戏开始时要求许可?我想在游戏后期请求许可。

提前致谢。

【问题讨论】:

    标签: ios firebase unity3d push-notification firebase-cloud-messaging


    【解决方案1】:

    初始化 Firebase 不会触发权限对话框。您需要检查代码中您请求授权以显示通知的位置。

    假设 iOS 10 或更高版本,请在 UNUserNotificationCenter 上查找 requestAuthorization 调用。这就是触发推送通知请求的原因。

    【讨论】:

      【解决方案2】:

      创建一个PostProcessBuild,您可以在其中编辑info.plist 生成的XCode 项目并将条目设置FirebaseMessagingAutoInitEnabled 添加到false。您可以查看this 了解有关如何添加/编辑 plist 的更多信息。

      此外,将对FirebaseMessaging 的任何引用移动到您想要请求权限的游戏部分。

      //If platform is not IOS, immediately set message listeners
      #if !UNITY_IOS
      SetPushNotificationListeners()
      #endif
      
      //Call this in the part of the game where you want the notifications to appear
      public void SetPushNotificationListeners()
      {
          //You might need FirebaseMessaging.RequestPermissionAsync() for IOS as well
      
          FirebaseMessaging.TokenReceived -= OnTokenReceived;
          FirebaseMessaging.TokenReceived += OnTokenReceived;
      
          FirebaseMessaging.MessageReceived -= OnMessageReceived;
          FirebaseMessaging.MessageReceived += OnMessageReceived;
      }
      

      我从documentation 获得了FirebaseMessagingAutoInitEnabled,但在我之前的测试中,似乎对FirebaseMessaging 的任何引用仍会请求权限。另请注意,这会延迟 FirebaseMessaging 的初始化和请求权限,因此您可能必须在实际收到任何推送通知之前重新启动游戏(我尚未对其进行测试,所以我不确定)。

      【讨论】:

        【解决方案3】:

        每个带有 FirebaseMessaging 引用的调用,例如 FirebaseMessaging.TokenReceivedFirebaseMessaging.MessageReceived 都会触发权限对话框。因此,您必须尽可能长时间地延迟该呼叫。将FirebaseMessagingAutoInitEnabled 设置为 false 无济于事

        【讨论】:

          猜你喜欢
          • 2018-09-11
          • 2016-11-21
          • 1970-01-01
          • 2022-12-14
          • 2017-11-02
          • 1970-01-01
          • 2019-12-29
          • 2017-01-05
          • 1970-01-01
          相关资源
          最近更新 更多