Я пытаюсь использовать Google Firebase для отправки push-уведомлений в приложение Xamarin Forms для iOS ... Я не получаю уведомления
Для отправки уведомлений я просто копирую токенмоего окна вывода, помещая мое приложение в фоновый режим и вставляя токен в построитель уведомлений Firebase.
Я получаю токен FCM, так что мое приложение определенно общается с Firebase.
Пока что я пробовал:
Отзыв моих сертификатов разработчика Apple и создание профиля, а затем создание новых.
Я создал новый проект Firebase и включил новый файл GoogleService-Info.plist (Build action -> BundleResource) .. Я не думал, что это что-нибудь сделает
с включенными удаленными уведомлениямив фоновом режиме моего info.plist
Любые предложения приветствуются, пожалуйста!
public override bool FinishedLaunching(UIApplication app, NSDictionary
options)
{
global::Xamarin.Forms.Forms.Init();
UIApplication.SharedApplication.RegisterForRemoteNotifications();
Firebase.Core.App.Configure();
_connection = DependencyService.Get<ISQLiteDb>().GetConnection();
LoadApplication(application: new V5KitchenApp.App());
// Register your app for remote notifications.
if (UIDevice.CurrentDevice.CheckSystemVersion(10, 0))
{
// iOS 10 or later
var authOptions = UNAuthorizationOptions.Alert | UNAuthorizationOptions.Badge | UNAuthorizationOptions.Sound;
UNUserNotificationCenter.Current.RequestAuthorization(authOptions, (granted, error) => {
Console.WriteLine(granted);
var token = Messaging.SharedInstance.FcmToken ?? "";
Console.WriteLine($"FCM token: {token}");
SendTokenToServer(token);
});
// For iOS 10 display notification (sent via APNS)
UNUserNotificationCenter.Current.Delegate = this;
// For iOS 10 data message (sent via FCM)
Messaging.SharedInstance.Delegate = this;
}
else
{
// iOS 9 or before
var allNotificationTypes = UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound;
var settings = UIUserNotificationSettings.GetSettingsForTypes(allNotificationTypes, null);
UIApplication.SharedApplication.RegisterUserNotificationSettings(settings);
}
return base.FinishedLaunching(app, options);
}
Вот как я переопределяю DidReceiveRemoteNotification
public override void DidReceiveRemoteNotification(
UIApplication application,
NSDictionary userInfo,
Action<UIBackgroundFetchResult> completionHandler)
{
PresentNotification(userInfo);
completionHandler(UIBackgroundFetchResult.NewData);
}
Ивот как я представляю уведомление
void PresentNotification(NSDictionary dict)
{
NSDictionary aps = dict.ObjectForKey(new NSString("aps")) as NSDictionary;
var msg = string.Empty;
if (aps.ContainsKey(new NSString("alert")))
{
msg = (aps[new NSString("alert")] as NSString).ToString();
}
if (string.IsNullOrEmpty(msg))
{
msg = "(unable to parse)";
}
MessagingCenter.Send<object, string>(this, App.NotificationReceivedKey, msg);
}
Я использую Xamarin.Firebase.iOS.CloudMessaging v3.1.2 Xamarin.Firebase.iOS.Core v5.1.8 Xamarin.Firebase.iOS.InstanceID v2.0.0