如何在应用程序首次运行时隐藏今日小部件?

时间:2016-03-10 20:22:57

标签: ios swift today-extension

我想知道如何在应用首次运行时隐藏今日小部件。

我不想将其隐藏在<script type="text/javascript" defer="defer"> var cb = function() { var l = document.createElement('link'); l.rel = 'stylesheet'; l.href = 'stylesheets/style.css'; var h = document.getElementsByTagName('head')[0]; h.parentNode.insertBefore(l, h); }; var raf = requestAnimationFrame || mozRequestAnimationFrame || webkitRequestAnimationFrame || msRequestAnimationFrame; if (raf) raf(cb); else window.addEventListener('load', cb); </script> 之内,而是隐藏在小部件的application(_:didFinishLaunchingWithOptions:)或生命周期方法中,以便将info.plist与小部件逻辑分离。

有没有人知道如何做到这一点?

1 个答案:

答案 0 :(得分:4)

来自Apples documentation

  

通常,当“内容”具有内容时,窗口小部件会显示在“今日”视图中   显示。如果当前正在运行的窗口小部件不再包含内容   显示,它可以获取一个小部件控制器并将标志设置为false   setHasContent:forWidgetWithBundleIdentifier:method。

您可以做的是执行以下操作:

NSUserDefaults检查是否是应用程序第一次运行且set setHasContent:forWidgetWithBundleIdentifier为false。代码示例如下:

if !NSUserDefaults.standardUserDefaults().boolForKey("firstRun"){
    // first run so do set setHasContent:forWidgetWithBundleIdentifier to false

    // Set your NSUserDefaults firstRun value to false so it does not run again
    NSUserDefaults.standardUserDefaults().setBool(true, forKey: "firstRun")
}