标签: ios10-today-widget

在扩展之间共享UserDefaults

创建Today小部件,我UserDefaults(suiteName:)用来保存一些数据.在我正在使用的主要应用程序中UserDefaults.standard().这是扩展无法读取(或可以吗?),这就是我使用suiteName:构造函数的原因.

用户UserDefaults.standard()在主应用中持久保存的数据需要在扩展中可用.

在这个时候,我坚持两者,以便可以共享价值观

 UserDefaults.standard().set:...forKey:...
 UserDefaults(suiteName:...)().set:...forKey:...
 ...
Run Code Online (Sandbox Code Playgroud)

问题是我应该UserDefaults.standard()放在一起,只是UserDefaults(suiteName:)在我的应用程序中使用,或者这是不好的做法,如果是这样,为什么?

编辑:我正在使用App组容器.为了澄清我要问我应该在我的项目中用suiteName替换standard()吗?

swift today-extension userdefaults ios10-today-widget

23
推荐指数
4
解决办法
1万
查看次数

今天Widget扩展高度 - iOS10

无法为紧凑模式设置今日小部件视图模式的高度.无论我设定什么价值.它将窗口小部件的高度设置为默认值.扩展模式工作正常,值正确设置并反映在窗口小部件中.我已经在viewDidLoad()方法中添加了这一行.

self.extensionContext?.widgetLargestAvailableDisplayMode = .expanded
Run Code Online (Sandbox Code Playgroud)

这是代码.maxSize的值不能像常量那样改变.

func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) {

        //self.preferredContentSize = (activeDisplayMode == .compact) ? maxSize : CGSize(width: maxSize.width, height: 300)

        if activeDisplayMode == NCWidgetDisplayMode.compact
        {
             self.preferredContentSize = CGSize(width: maxSize.width, height: 300)
        }
        else
        {
            self.preferredContentSize = CGSize(width: maxSize.width, height: 560)
        }
}
Run Code Online (Sandbox Code Playgroud)

ios swift today-extension ios10-today-widget

20
推荐指数
2
解决办法
8853
查看次数

iOS 10:如何调试今日小部件 - "无法加载"消息

在我看来,每当Today Widget因任何原因崩溃时,它都会显示"无法加载"消息(如附加屏幕上所示).

当发生这种情况时,调试器中没有任何内容启动,控制台上没有任何内容.在我看来,就像在大海捞针一样.是否有可能以任何方式调试Xcode中的"无法加载"消息?

Xcode版本:8.2

iOS模拟器:10.2

无法加载

xcode ios swift3 ios10 ios10-today-widget

20
推荐指数
1
解决办法
5056
查看次数

今天在iOS 10中扩展紧凑模式高度

我正在努力在紧凑模式下改变我的iOS 10小部件的高度.

我只有一个空的小部件,里面没有视图.不过,无论我为紧凑的高度设置什么,它似乎都忽略了它.

这是我的代码:

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.

    [self.extensionContext setWidgetLargestAvailableDisplayMode:NCWidgetDisplayModeExpanded];

}

- (void)widgetActiveDisplayModeDidChange:(NCWidgetDisplayMode)activeDisplayMode withMaximumSize:(CGSize)maxSize{
    if (activeDisplayMode == NCWidgetDisplayModeCompact) {
        self.preferredContentSize = CGSizeMake(0, 50);
    }
    else{
        self.preferredContentSize = CGSizeMake(0, 200);
    }
}
Run Code Online (Sandbox Code Playgroud)

这可能是测试版软件的问题吗?我在Xcode 8 beta和iOS 10 beta 7上.

objective-c ios ios10 ios10-today-widget

16
推荐指数
3
解决办法
7321
查看次数

iOS 10今日视图小工具:如何判断它是*实际*在屏幕上/可见?

我有一个小部件,它可以在一天中定期从服务器检索更新,但是如果用户实际查看它,则希望它立即再次更新.这总是在iOS 8/9中运行良好... viewWillAppear特别是当视图即将出现时触发.

但在iOS 10中,它似乎也会在其他时间发生.不知道什么时候.但突然间,我在更新服务上获得了大约5倍的点击量,这是一项付费服务​​,所以这是一个真正的问题.

在Today小部件上,有没有办法保证小部件实际可见?或者,至少,今日视图实际上是可见的?

objective-c ios today-extension ios10 ios10-today-widget

9
推荐指数
1
解决办法
622
查看次数

为什么 Today Widget 在 iOS 14 上显示“无法加载”且无法调试?

在 iOS 14 上运行我的 iOS 12+ 应用程序时,(长期存在的)Today Widget 不再起作用。而不是仅Unable to load显示小部件内容。

相同的代码在 iOS 13 及更低版本上运行没有任何问题。

注:这是不是关于与iOS 14.他们做工精细推出了新的主屏幕小部件。这是关于旧的今天小部件。

我找到了几个关于这个Unable to load问题的现有线程和其他资源。但是,它们都较旧,并且与 iOS 14 无关。在几乎所有情况下,问题都是小部件崩溃并因此无法加载。

我尝试通过直接从 Xcode 运行来调试小部件扩展:选择小部件目标而不是应用目标并运行项目。这在 iOS 13 及更低版本上运行良好。小部件变得可见并按预期工作。另外我可以使用断点等来检查是否有任何问题。

然而,在 iOS 14 上,当我开始调试时没有任何反应,希望 Xcode 显示Running com.apple.springboard on iPhone XYZ. 当我手动切换到今天的屏幕时,小部件Unable to load再次显示。

由于调试不起作用,我添加了一种将消息记录到应用程序组文件夹中的文件的方法。虽然这在 iOS 13 及更低版本上也能正常工作,但它在 iOS 14 上没有任何作用。

我正在使用 Xcode 12.1,据我所知,iOS 14 和 14.1 都受到影响。

似乎 Widget 在 iOS 14 上根本无法运行。

知道可能是什么问题吗?知道如何在不调试或记录的情况下找到问题的根源吗?

xcode widget ios ios10-today-widget ios14

8
推荐指数
1
解决办法
1416
查看次数

今天的扩展iOS10显示更多/更少

已经更新了今天的iOS 10扩展,实现了委托方法:

-(void)widgetActiveDisplayModeDidChange:(NCWidgetDisplayMode)activeDisplayMode withMaximumSize:(CGSize)maxSize
{
    if (activeDisplayMode == NCWidgetDisplayModeCompact){
        [UIView animateWithDuration:0.25 animations:^{
            self.preferredContentSize = maxSize;
            [self.view layoutIfNeeded];
        }];
    }
    else if (activeDisplayMode == NCWidgetDisplayModeExpanded){
        newHeight = [self getNewWidgetHeight];
        [UIView animateWithDuration:0.25 animations:^{
            self.preferredContentSize = CGSizeMake(0, newHeight);
            [self.view layoutIfNeeded];
        }];
    }
}
Run Code Online (Sandbox Code Playgroud)

一切正常.但是,如果我将小部件保持在紧凑模式(显示更多选项)并且如果我重新运行/重新打开小部件屏幕,并且如果我点击"显示更多"按钮,即使委托方法被触发也没有任何反应.我应该按2次显示更多/更少,直到小部件开始扩展.我也收到这个错误:No active animation block!

objective-c ios ios10 ios10-today-widget

7
推荐指数
1
解决办法
5952
查看次数

iOS今天的扩展导致程序以退出代码结束:0

我正在使用Xcode 8.0,Swift 3.

我今天正在制作显示文字和图片的扩展程序,但经常导致此消息,今天扩展程序不起作用.很少工作.

程序以退出代码结束:0

我在领域保存数据,今天使用数据扩展(字符串,图像)

它是否会导致内存限制?所以,我怎么能贬低关于今天扩展的记忆?

我的扩展代码:

class Information: Object {

    dynamic var Name = ""
    dynamic var Image : NSData?

    override class func primaryKey() -> String {
        return "Name"
    }
}

class TodayViewController: UIViewController, NCWidgetProviding {

    var realm : Realm?
    var results : Results<Information>?
    var index = 0

    @IBOutlet var NameLabel: UILabel!
    @IBOutlet var ImageView: UIImageView!

    @IBAction func leftAction(_ sender: UIButton) {
        guard index == 0 else {
            index -= 1
            loadData(index: index)
            return
        }
    }

    @IBAction func …
Run Code Online (Sandbox Code Playgroud)

ios today-extension swift3 xcode8 ios10-today-widget

7
推荐指数
1
解决办法
1652
查看次数

今天iOS 10中的小部件没有扩展

我正试图解决我今天的小部件的问题.按"显示更多"按钮后,它不会在iOS10上扩展.它的大小始终保持不变.

这是代码 TodayViewController.swift

import UIKit
import NotificationCenter

class TodayViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        extensionContext?.widgetLargestAvailableDisplayMode = .expanded
    }
}

extension TodayViewController: NCWidgetProviding {

    func widgetActiveDisplayModeDidChange(activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) {
        if activeDisplayMode == .expanded {
            preferredContentSize = CGSize(width: 0, height: 280)
        } else {
            preferredContentSize = maxSize
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有什么提示吗?

ios swift today-extension ios10 ios10-today-widget

6
推荐指数
1
解决办法
1526
查看次数

iOS10 Today Widget - 如何确定 iPhone 是否被锁定?

我正在向我现有的 iOS 应用程序添加一个小部件。上周 iOS10 发布,并为 App Extensions 和 Today Widgets 添加了一些新功能。

有一些来自 Apple 的小部件,例如“活动小部件”,如果您使用 Apple Watch 在小部件视图中显示您的活动。此小部件仅在您的 iPhone 已解锁时才可用。如果它被锁定,它会显示一条消息,如“解锁以显示活动数据”或类似的信息。如何检查用户的手机是否被锁定?

我想从 HealthKit 显示一些信息,只要 iPhone 被锁定,这是不可能的,因为在这种情况下 Apple 会限制对健康数据的访问。如果我解锁 iPhone 一切正常。如果我在锁定屏幕上,它不会更新,因为访问受到限制。

Apple 对今天小部件的文档非常好,但根据我的问题我找不到任何东西。

这是 iPhone 锁定时小部件的外观:

在此处输入图片说明

这是 iPhone锁定时小部件的外观:

在此处输入图片说明

iphone ios ios10-today-widget

5
推荐指数
1
解决办法
1147
查看次数

在IOS10 Widget中以编程方式更改NCWidgetDisplayMode

我期待以编程方式更改今天扩展的高度.正如iOS10 SDSK介绍的那样,NCWidgetDisplayMode我试图用它来以编程方式改变我的身高preferredContentSize.

我已实施widgetActiveDisplayModeDidChange:

@available(iOSApplicationExtension 10.0, *)
func widgetActiveDisplayModeDidChange(activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) {
    if (activeDisplayMode == NCWidgetDisplayMode.Compact) {
        self.preferredContentSize = maxSize
    }
    else {
        self.preferredContentSize = CGSize(width: maxSize.width, height: 280)
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望在UIButton按下时窗口小部件高度扩展:

@IBAction func multiplybyonethousand (sender: AnyObject) {

    if self.extensionContext?.widgetActiveDisplayMode == NCWidgetDisplayMode.Compact {

        self.widgetActiveDisplayModeDidChange(.Expanded, withMaximumSize: CGSizeMake(0, 300))
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我运行我的代码时,今天扩展的高度不会改变,控制台给我以下错误:

2016-11-05 14:24:29.425697 todayextension[28590:7222420] No active animation block!
Run Code Online (Sandbox Code Playgroud)

我试图widgetActiveDisplayModeDidChange在动画块内部调用:

@IBAction func multiplybyonethousand (sender: AnyObject) {
        if self.extensionContext?.widgetActiveDisplayMode == NCWidgetDisplayMode.Compact { …
Run Code Online (Sandbox Code Playgroud)

ios swift today-extension ios10-today-widget

5
推荐指数
1
解决办法
2858
查看次数

Swift 3/iOS 10 Today View Widget

如何在今天的小部件中显示"显示更多"按钮(类似于此处附带的新闻应用程序)?我在Apple上发现了这个, 但swift 3/iOS 10有一些变化.这似乎是iOS 10中的新功能.

在此输入图像描述

today-extension swift3 ios10 xcode8 ios10-today-widget

2
推荐指数
1
解决办法
3124
查看次数