【问题标题】:Xamarin Forms iOS Local Notifications not displayingXamarin Forms iOS 本地通知不显示
【发布时间】:2018-04-30 08:48:20
【问题描述】:

我正在 Xamarin.Forms 中构建应用程序,但无法让本地通知在 iOS 中显示。 我已经按照https://developer.xamarin.com/guides/ios/platform_features/user-notifications/enhanced-user-notifications/ 的指南进行操作,但仍然没有显示通知。 我在 AppDelegate 中的 FinishedLaunching 方法中添加了以下内容:

    UNUserNotificationCenter.Current.RequestAuthorization (UNAuthorizationOptions.Alert, (approved, err) => {});

在我希望显示通知的页面中:

using UserNotifications;


var content = new UNMutableNotificationContent ();
content.Title = "Notification Title";
content.Subtitle = "Notification Subtitle";
content.Body = "Test Notification.";
content.Badge = 1;

var trigger =  UNTimeIntervalNotificationTrigger.CreateTrigger (5, false);

var requestID = "sampleRequest";
var request = UNNotificationRequest.FromIdentifier (requestID, content, 
trigger);

UNUserNotificationCenter.Current.AddNotificationRequest (request, (err) => {
if (err != null) {
    // Do something with error...
}
});

我所有的 nuGet 包都是最新的,我已经尝试在 iOS iPhone 模拟器和物理 iPad 设备上进行测试。

这里有什么我遗漏的吗?

【问题讨论】:

    标签: ios xamarin.ios xamarin.forms


    【解决方案1】:

    实际上,如果您的应用在前台,iOS 系统会默认将通知静音。

    解决方案:

    有两种解决方案适合您:

    1. 当您触发延迟通知时,通过单击主页按钮进入后台。然后会显示通知。

    2. 实现代理userNotificationCenter:willPresentNotification:withCompletionHandler:,当你的应用在前台有通知到达时会调用它。 例如,下面是当应用在前台时启用通知的代码 sn-p:

      UNUserNotificationCenter.Current.Delegate = new MyNotificationDelegate();
      
      public class MyNotificationDelegate: UNUserNotificationCenterDelegate
      {
          public override void WillPresentNotification(UNUserNotificationCenter center, UNNotification notification,  Action<UNNotificationPresentationOptions> completionHandler)
          {
              completionHandler(UNNotificationPresentationOptions.Alert);
          }
      }
      

    【讨论】:

    • 谢谢!实施委托 willPresentNotification 解决了这个问题。
    • 很高兴听到这个消息:)
    • 所以不再需要发送本地通知的 OP 代码了,嗯
    【解决方案2】:

    啊啊啊!这是我误解了 2 天的重要信息。 Xamarin 示例在应用程序上有一个用于触发本地通知的按钮。

    这将被忽略,因为当您按下按钮时,应用程序(上面有按钮)处于前台!

    【讨论】:

    • 是的。很多示例代码都是“优秀的”。哈哈
    猜你喜欢
    • 1970-01-01
    • 2019-02-13
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    • 1970-01-01
    • 2018-01-21
    • 2020-06-01
    • 1970-01-01
    相关资源
    最近更新 更多