Вам не нужно добавлять какие-либо интерфейсы к вашим проектам на платформе, Просто загрузите пакет nuget в оба проекта Android/IOS.
на IOS вы должны добавить:
// Ask the user for permission to get notifications on iOS 8.0+
if (UIDevice.CurrentDevice.CheckSystemVersion (8, 0)) {
var settings = UIUserNotificationSettings.GetSettingsForTypes (
UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound,
new NSSet());
UIApplication.SharedApplication.RegisterUserNotificationSettings (settings);
}
вашему методу:
public override bool FinishedLaunching (UIApplication app, NSDictionary options)
в AppDelegate:
Затем в общем проекте вы звоните:
using Plugin.LocalNotifications.Abstractions;
CrossLocalNotifications.Current.Show("You've got mail", "You have 793 unread messages!");
Что касается замены вашего Текущая страница, вам не нужно ничего делать, Xamarin Forms справится с этим для вас.
Также на андроид, вы можете контролировать, вам поведение перезапуском приложения, установив LaunchMode вашего MainActivity:
Пример:
LaunchMode = Android.Content.PM.LaunchMode.SingleInstance, AlwaysRetainTaskState = true
Чтобы узнать больше о LauchModes на Android, пожалуйста, прочитайте:
https://developer.android.com/guide/components/tasks-and-back-stack.html
И еще раз проверьте флаги деятельности:
FLAG_ACTIVITY_NEW_TASK
FLAG_ACTIVITY_CLEAR_TOP
FLAG_ACTIVITY_SINGLE_TOP
В настоящее время этот плагин не позволяет обнаруживать какие-либо уведомления внутри приложения. Но вы можете сделать это, используя специфичные для конкретной платформы функциональность
IOS: Пожалуйста, обратитесь к https://developer.xamarin.com/guides/cross-platform/application_fundamentals/notifications/ios/remote_notifications_in_ios/
public override void ReceivedLocalNotification(UIApplication application, UILocalNotification notification)
{
MessagingCenter.Send<MainPage> (this, "IOS notification received");
}
Android: После прочтения источника этого плагина, я обнаружил, что Youcan проверка сверток в вашей кнопке создать метод для ключа ScheduledAlarmHandler.LocalNotificationKey
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
if(bundle.ContainsKey(ScheduledAlarmHandler.LocalNotificationKey)){
//App launched form notification
MessagingCenter.Send<MainPage> (this, "Android notification received");
}
}
Также вы можете попробовать использовать BroadcastRece класс iver; https://developer.xamarin.com/api/type/Android.Content.BroadcastReceiver/
Благодарим вас за ответ. Я попробовал это (Notifier.Current.Show («У вас есть почта», «У вас есть 793 непрочитанных сообщения!»);) В начале, но он не смог найти Notifier.Теперь я снова попытался установить пакет с консоли, и у меня возникло исключение ItemNotFoundException. Любые идеи? – guenes
Я немного отредактировал пример, попробуйте это – Greensy
Большое вам спасибо. Работает CrossLocalNotifications. Теперь я попробую оставшуюся часть вашего дела. – guenes