【问题标题】:NativeScript - how to decrement application icon badge number for iOSNativeScript - 如何减少 iOS 的应用程序图标徽章编号
【发布时间】:2019-02-07 22:29:00
【问题描述】:

使用 Nativescript,我希望能够在应用程序中执行特定操作时减少图标徽章编号。

我从这段代码开始(示例):

if (app.ios) {
  app.getNativeApplication().applicationIconBadgeNumber = 5;
}

我已经阅读过,对于 iOS 10+,我需要从 UNUserNotificationCenter 获得授权。当应用开始请求授权时,我尝试使用应用委托,但我似乎无法从 Nativescript 访问授权类。

我尝试寻找插件,但似乎找不到任何...

如果有人知道我如何访问 Authorization api 甚至处理来自 NativeScript 的图标徽章更新,我将不胜感激。

【问题讨论】:

    标签: javascript ios notifications nativescript


    【解决方案1】:

    您可以使用nativescript-local-notifications 请求权限。

    【讨论】:

      【解决方案2】:

      我取得了一些进展,在我的AppDelegate 中我更新为:

              appDelegate.prototype.applicationDidFinishLaunchingWithOptions = function (application, launchOptions) {
                  var center = coreUtils.ios.getter(UNUserNotificationCenter, UNUserNotificationCenter.currentNotificationCenter);
                  center.delegate = this; 
                  const authorizationOptions = UNAuthorizationOptions.Badge;
                  center.requestAuthorizationWithOptionsCompletionHandler(authorizationOptions, (granted, error) => {
                      if(!error) {
                          application.applicationIconBadgeNumber = 5;
                      } else {
                          console.log("Error", error);
                      }
                  });
      

      现在的问题是,当我打开应用程序时,applicationIconBadgeNumber 被设置为 0。我可以通过在 applicationDidEnterBackground 事件上放置一个事件侦听器并将 applicationIconBadgeNumber 设置为 5 来测试它。我是然后能够看到徽章图标。现在我必须弄清楚为什么 applicationIconBadgeNumber 在应用打开时设置为 0。

      【讨论】:

      • 我相信您的目标是 iOS 10 及更高版本。如果您计划支持作为 {N} 个项目的默认目标的 iOS 9 支持,那么这可能不起作用。至少您必须在运行时运行此代码之前验证版本。
      • @Manoj,当然我会确保它在以前的 iOS 版本上工作。我能够使徽章出现。我只是想知道为什么应用程序打开时它设置为 0。不知道是不是正常的 Nativescript 行为。
      猜你喜欢
      • 2013-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-13
      • 1970-01-01
      • 1970-01-01
      • 2016-01-25
      • 1970-01-01
      相关资源
      最近更新 更多