【发布时间】:2021-10-09 01:21:29
【问题描述】:
我有一个使用 Firebase for Unity 的简单应用程序,用户在其中动态订阅/取消订阅主题,他将在其中收到每个所述主题的推送通知。
这是处理它的代码:
public class FBManager : MonoBehaviour {
private async void Start() {
var dependencyStatus = await Firebase.FirebaseApp.CheckAndFixDependenciesAsync();
Firebase.Messaging.FirebaseMessaging.TokenReceived += OnTokenReceived;
Firebase.Messaging.FirebaseMessaging.MessageReceived += OnMessageReceived;
}
public void OnTokenReceived(object sender, Firebase.Messaging.TokenReceivedEventArgs token) {
UnityEngine.Debug.Log("Received Registration Token: " + token.Token);
}
public void OnMessageReceived(object sender, Firebase.Messaging.MessageReceivedEventArgs e) {
UnityEngine.Debug.Log("Received a new message from: " + e.Message.From);
}
public async void Subscribe(string topic) {
print("Subbing " + topic);
await Firebase.Messaging.FirebaseMessaging.SubscribeAsync(topic);
print("Subbed " + topic);
}
public async void Unsubscribe(string topic) {
print("unSubbing " + topic);
await Firebase.Messaging.FirebaseMessaging.UnsubscribeAsync(topic);
print("unSubbed " + topic);
}
}
订阅/取消订阅方法是从应用程序中的按钮调用的,此代码在应用程序的第一个会话期间运行良好。
但是,在关闭/最小化和重新打开应用程序时,这两种异步方法 (SubscribeAsync/UnsubscribeAsync) 都不会完成,从而使应用程序处于损坏状态,在我第一次打开它后我无法更改其订阅。 由于 Firebase API 从不抛出任何错误/消息,我不确定该怎么做,因为这些方法只是简单地执行并且永远不会完成。
我尝试了一些协程的变体,并使用了相同方法的过时版本(订阅/取消订阅),这两种方法都有相同的问题(重新打开应用程序后不起作用)。 我用“adb logcat”检查了控制台输出,Firebase 没有抛出任何错误,订阅/取消订阅的执行都只是在第一次打印时停止。
有人在图书馆遇到过此类问题吗? Firebase 文档有些乏善可陈,经过几天的研究,我没有在网上找到任何相关的问题,而且我发现的一点是大约 2 年前的内容,当时他们仍在使用已弃用的 SubscribeFromTopic/UnsubscribeFromTopic。因此,我们将不胜感激任何有关此主题的帮助。
【问题讨论】:
标签: c# firebase unity3d firebase-cloud-messaging