我想知道如何在应用首次运行时隐藏今日小部件。
我不想将其隐藏在<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
与小部件逻辑分离。
有没有人知道如何做到这一点?
答案 0 :(得分:4)
通常,当“内容”具有内容时,窗口小部件会显示在“今日”视图中 显示。如果当前正在运行的窗口小部件不再包含内容 显示,它可以获取一个小部件控制器并将标志设置为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")
}