iOS 8 Today Extension无法在设备上使用

当我在模拟器上运行我的今天扩展一切工作正常,并按预期显示以下内容:

在这里输入图像说明

但是,当我在我的设备(iPod touch和iPhone 5s)上运行它时,身体不会显示(不介意标题和图标,这已被更改)

在这里输入图像说明

我将debugging器附加到我的扩展,我得到这个:

在这里输入图像说明

我不知道这是什么意思…

我删除了今天扩展的所有代码来检查是否有我的代码有问题,没有任何改变,所以我怀疑我的代码有问题。 任何build议如何解决这个将不胜感激。

(如果有任何意义的话,我确实启用了应用程序组)

确保扩展目标版本

请确保你的扩展目标版本是正确的。 Xcode'给你默认的最高版本,如8.3,如果你的iOS版本比它低,Xcode'd给你一个崩溃。

我发现我用错误的软件访问了我的应用程序组。 只要确保你使用“group.something.something”而不是“something.something”访问应用程序组

我find了解决scheme。 我只需要指定arm64作为小部件目标的有效架构。

在小工具目标上

构build设置>有效的体系结构

我只有armv7和armv7s。 我添加了arm64,它在我的5s设备中像魅力一样工作

使用附加应用信息时要记住几点

  • 目标扩展的Bundle标识符应该是com.companyName.AppName.ExtensionName

  • 您需要为目标扩展程序分别使用AppID,并将标识符指定为com.companyName.AppName.ExtensionName,并使用此AppID创buildconfiguration文件。

  • 此外,创build的appGroupID应embedded到AppID中(用于应用程序以及扩展)。

既然你没有分享任何代码,我不能帮你一个具体的答案。 请尝试使用以下步骤Debug-> Attach to Process – >(从菜单中select您的小部件)并debugging您的viewdidload viewwillappear– (void)widgetPerformUpdateWithCompletionHandler:(void(^)(NCUpdateResult))completionHandler方法来debugging您的小部件。 希望能帮助到你。

我的问题的来源:

  • 在模拟器上每次都调用viewDidLoad,在设备上一次加载视图,只调用viewWillAppear。
  • 该小部件不会收到核心数据更改通知
  • 不要从widgetPerformUpdateWithCompletionHandler调用NCWidgetController.widgetController()。setHasContent。 使用它的最好的地方(主要)是你的包含应用程序,而不是小部件本身。

希望这可以帮助别人

在我的情况下,我设置了首选的内容大小,并开始在设备上工作

self.preferredContentSize = CGSizeMake(UIScreen.mainScreen().nativeBounds.width, 100.0)