2016-10-11 7 views
0

Я пытаюсь реализовать совместный проект с Xamarin Forms для Android, ios и WinPhone. Я хочу использовать уведомления, и я последовал этому образцу (https://github.com/edsnider/Xamarin.Plugins/tree/master/Notifier) и смог создать локальное уведомление в Android. Но я до сих пор не понимаю, как работать с Android-приложением. Откройте страницу или проверьте, активна ли эта страница или прервать трансляцию для всех платформ. Любые ссылки, которые могут мне помочь? Я исправлю, что он работает только с интерфейсом, который я должен реализовать на каждой платформе или существует любое другое решение?Уведомление о форме Xamarin

Моя основная проблема заключается в том, что я получаю сообщение от XMPP-протокола и хочу отправлять уведомления пользователя сообщения или обновить пользовательский интерфейс, если она открыта ...

Спасибо за вашу помощь ...

ответ

0

Вам не нужно добавлять какие-либо интерфейсы к вашим проектам на платформе, Просто загрузите пакет 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/

+0

Благодарим вас за ответ. Я попробовал это (Notifier.Current.Show («У вас есть почта», «У вас есть 793 непрочитанных сообщения!»);) В начале, но он не смог найти Notifier.Теперь я снова попытался установить пакет с консоли, и у меня возникло исключение ItemNotFoundException. Любые идеи? – guenes

+0

Я немного отредактировал пример, попробуйте это – Greensy

+0

Большое вам спасибо. Работает CrossLocalNotifications. Теперь я попробую оставшуюся часть вашего дела. – guenes