ash*_*hok 4 widget wwdc ios ios8 ios-app-extension
Apple在2014年WWDC中引入了"Widgets"的概念.Widgets用于快速访问具有急需信息的应用程序.我试图将Widgets添加到我的应用程序中.当我们在应用程序中只有一个Target时很容易.
但是,如果我们有多个目标,似乎我们需要为每个目标添加单独的Widget.是否可以添加一个Widget并使其与所有目标共享?
提前致谢.
Dar*_*ren 12
这当然是可能的.我有一个名为DD-WRT的应用程序,它有3个独立的目标.基本上1用于iPhone,1用于iPad,1用于免费'精简版'.(我已经使iPhone和iPad成为相同的通用应用程序,但仍然需要在App Store上维护所有3个).
我想在today widget所有3个应用程序中添加一个,但只有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.m和MainInterface,storyboard文件,选择它们然后在File inspector窗口中勾选每个目标.像这样:

请记住在添加新文件时选择所有扩展目标.
最后我发现我必须做的事情(我花了很长时间看着崩溃,直到我发现它).在General选项卡中,对于每个扩展目标,单击Main Interface下拉框并重新选择MainInterface故事板.虽然它看起来已经被选中,但它实际上已经选择了你删除的那些.重新选择它可确保您指向剩下的唯一一个.
希望就是这样.给每个目标一个Clean然后构建并运行每个目标.
小智 0
我有同样的问题。实现一个今日小部件,并希望将其与开发/部署和测试(Testflight)的目标设置一起使用。
我最终创建了第二个小部件,添加了所有需要的文件,并使用与其他小部件中完全相同的故事板。所以唯一需要维护的是第二个 info.plist。我想不出任何更简单的方法来实现这一目标。
在一切正常之前,由于某些原因,我必须清理目标并重置模拟器。
希望这可以帮助。