iOS8-多个目标的单个小部件

问题描述 投票:4回答:3

Apple在WWDC 2014中引入了“窗口小部件”的概念。窗口小部件用于通过所需的大量信息快速访问应用程序。我试图将小部件添加到我的应用程序。当我们在应用程序中只有一个Target时,这很容易。

但是,如果我们有多个目标,似乎我们需要为每个目标添加单独的小部件。是否可以添加单个窗口小部件并使其与所有目标共享?

提前感谢。

ios widget ios8 ios-app-extension wwdc
3个回答
12
投票

这当然是可能的。我有一个名为DD-WRT的应用程序,它具有3个单独的目标。基本上1个用于iPhone,1个用于iPad,1个是免费的“精简版”版本。 (此后,我将iPhone和iPad设为相同的通用应用,但仍需要在App Store上维护这三个应用。)>

我想向所有3个应用添加today widget,但仅具有1个代码库,就像应用本身一样。

所以我怎么做...

[首先为您的应用目标之一添加today widget目标。您可以选择Editor > Add Target,然后从Today Extension部分中选择Application Extension

给小部件目标一个名称,然后选择将分配给该小部件的一个应用程序目标。

“添加目标”

您现在将在文件检查器中看到一个新的文件组,您将在其中对小部件进行编码“文件检查器”

现在为您拥有的每个其他应用构建目标执行完全相同的过程,但是为每个应用命名一个略有不同的名称,并为每个应用选择不同的应用目标。你应该有这样的东西“所有目标”“ >>

现在您还将拥有多个小部件文件,这是我们不想要的。我们只想使用1组文件。这里的秘密在于小部件的Info.plist文件。 bundle identifier必须与所包含应用程序的bundle identifier相匹配。因此,重命名每个小部件的Info.plist文件,以便您可以确定哪个目标是哪个目标,然后将它们全部移至您创建的第一个小部件的文件夹中。您现在可以删除其他小部件的文件和文件夹。

您现在应该具有以下内容:“

现在您需要告诉每个扩展目标您更改了.plist文件名。

Build Settings标签下,在搜索框中输入plist,然后将Info.plist file的条目编辑为该目标的列表的名称。“编辑plist名称”

现在,您必须将所有小部件文件设置为每个目标的成员。对于默认的TodayViewController.mMainInterface,storyboard文件,选择它们,然后在File inspector窗口中勾选每个目标。像这样:“文件目标”

添加新文件时,请记住要选择所有扩展目标。

我发现我必须做的最后一件事(我花了很长时间研究一次撞车,直到我弄清楚了)。在General选项卡中,对于每个扩展目标,单击Main Interface下拉框,然后重新选择MainInterface故事板。即使看起来已经选择了它,但实际上是选择了您删除的对象。重新选择它可以确保您指向的是剩下的唯一一个。

希望就是这样。给每个目标一个Clean,然后构建并运行每个目标。

我有完全相同的问题。实施今天的窗口小部件,并希望将其与目标设置一起使用以进行开发/部署和测试(Testflight)。

我最终创建了第二个小部件,添加了所有需要的文件,并使用与其他小部件完全相同的StoryBoard。因此,唯一需要维护的是第二个info.plist。我想不出任何更简单的方法来实现这一目标。

在一切正常之前,我出于某些原因不得不清理目标并重置模拟器。

希望这会有所帮助。

我通过每个目标都有一个扩展名解决了这个问题,然后只有一个扩展名拥有所有类,并且每个类的目标成员资格都包括每个扩展名目标。

这具有额外的好处,我可以在其相关扩展中使用一些资源,例如主要目标中的颜色资产目录。


0
投票

我有完全相同的问题。实施今天的窗口小部件,并希望将其与目标设置一起使用以进行开发/部署和测试(Testflight)。


0
投票

我通过每个目标都有一个扩展名解决了这个问题,然后只有一个扩展名拥有所有类,并且每个类的目标成员资格都包括每个扩展名目标。

这具有额外的好处,我可以在其相关扩展中使用一些资源,例如主要目标中的颜色资产目录。

© www.soinside.com 2019 - 2024. All rights reserved.