我想在一个 iOS 的 Unity项目中使用FCM(Firebase云消息传递)和LocalNotifications。 但是我无法收到有关打开LocalNotifications的回调。
首先,我为FCM进行了回调。
void Start() {
FirebaseMessaging.MessageReceived += (sender, args) => {
Debug.Log("Received FCM: " + args.Message.Notification.Body);
};
}
第二,我为LocalNotifications进行了回调。
void Update() {
if (UnityEngine.iOS.NotificationServices.localNotificationCount > 0) {
foreach (var n in UnityEngine.iOS.NotificationServices.localNotifications) {
Debug.Log("Received LocalNotification: " + n.alertBody);
}
// and clear local notifications
}
}
最后,我在暂停应用程序时发出了LocalNotification。
void OnApplicationPause(bool paused) {
if(paused) {
var n = new UnityEngine.iOS.LocalNotification();
n.alertAction = "Test";
n.alertBody = "This is a test message.";
n.fireDate = DateTime.Now.AddSeconds(10);
UnityEngine.iOS.NotificationServices.ScheduleLocalNotification(n);
}
}
在应用程序处于后台状态时打开LocalNotification消息后,NotificationServices.localNotificationCount
始终为零,因此从未调用Received LocalNotification
。
但是尽管进行了LocalNotification,仍调用了Received FCM
,并且MessageReceivedEventArgs.Message.RawData
是空字符串。
我在下面的NotificationManager.MessageRecieved
中收到一条错误消息。
ERROR: ret == 0 || ret == 22
NullReferenceException: A null value was found where an object instance was required.
我想FCM SDK不仅接收远程通知的回调,还接收本地通知的回调。 因此,我无法收到LocalNotifications的任何回调。
我不知道要解决这个问题。有人有不错的解决方案吗?
Unity 2018.1.0f2,Firebase Unity SDK 5.2.1,Xcode 9.4.1,iOS 11.4