2017-03-10 22 views
2

我想向用戶顯示通知,但標題始終爲空。問題是notification.AlertAction在顯示通知之前爲空。本地通知AlertAction在Xamarin iOS中始終爲空

public override void ReceivedLocalNotification(UIApplication application, UILocalNotification notification) 
    { 
     // notification.AlertAction is null!!! while notification.AlertBody is correct 
     UIAlertController okayAlertController = UIAlertController.Create(notification.AlertAction, notification.AlertBody, UIAlertControllerStyle.Alert); 
     okayAlertController.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, null)); 

     Window.RootViewController.PresentViewController(okayAlertController, true, null); 

     UIApplication.SharedApplication.ApplicationIconBadgeNumber = 0; 
    } 

,我同時設置notification.AlertAction和notification.AlertBody:

public class NotificationService_iOS : INotificationService 
{ 
    public void Notify(string title, string text) 
    { 
     var notification = new UILocalNotification(); 
     notification.FireDate = NSDate.FromTimeIntervalSinceNow(0); 
     notification.AlertAction = title; 
     notification.AlertBody = text; 
     notification.ApplicationIconBadgeNumber = 1; 
     notification.SoundName = UILocalNotification.DefaultSoundName; 
     UIApplication.SharedApplication.ScheduleLocalNotification(notification); 
    } 
} 

我下面這個教程:https://developer.xamarin.com/guides/ios/application_fundamentals/notifications/local_notifications_in_ios_walkthrough/

回答

2

似乎是在Xamarin這部分的錯誤。我嘗試了你的代碼,事實上AlertAction總是爲空,不管你設置了什麼,但是這只是在iOS 10+的設備上運行代碼時發生的。在iOS 9.3的模擬器中運行相同的代碼,一切都運行良好。

一直在尋找Xamarin.iOS代碼,但不能罰任何奇怪的東西,所以下一步將打開一個問題。

一兩件事:你的具體的例子,你可以使用ALERTTITLE

public void Notify(string title, string text) 
{ 
    var notification = new UILocalNotification(); 
    notification.FireDate = NSDate.FromTimeIntervalSinceNow(0); 
    notification.AlertTitle = title; 
    notification.AlertBody = text; 
    // Use this if you want to set the Action Text from here. 
    notification.AlertAction = "Got it!!"; 
    notification.ApplicationIconBadgeNumber = 1; 
    notification.SoundName = UILocalNotification.DefaultSoundName; 
    UIApplication.SharedApplication.ScheduleLocalNotification(notification); 
} 

UIAlertController okayAlertController = UIAlertController.Create(notification.AlertTitle, notification.AlertBody, UIAlertControllerStyle.Alert); 

這實際上是設置你想要的通知標題屬性。如果您想從通知中設置AlertAction,則AlertAction用於Action文本。

okayAlertController.AddAction(UIAlertAction.Create(notification.AlertAction, UIAlertActionStyle.Default, null)); 

但你目前正在使用只是「好」你不應該有任何問題,直到真正的問題得到解決。

希望得到這個幫助!