iOS 8今日小部件在运行项目时未出现

9
我有一个带有2个目标的应用程序,并添加了一个今天的小部件。当我运行它时,它不会出现在“不包括”部分中的今天通知编辑中,它通常与我的其他应用程序一起首次出现。有任何想法是什么出了问题吗?扩展程序缺少授权警告,但我也为工作的那些得到了这个警告(尝试添加一个,没有帮助)。
此外,如果我尝试将其附加为调试菜单下的进程,则根本不会显示。
我已尝试从模拟器中删除应用程序并进行重置等操作,我已尝试使用另一个具有多个目标的应用程序,因为我认为可能是问题所在,但另一个应用程序可以正常工作。
是否还有其他人有类似的经历或可以提出建议?
2014年10月6日编辑:我仍然没有找到解决方法,但我的项目不使用arm64。这可能是问题吗?我尝试从其他项目中删除arm64,但我认为Xcode 6不允许这样做,所以我无法测试它,有人知道这是否可能吗?

2
我认为(缺乏arm64)是问题所在 - 不过我忘记在哪里看到的了。 - siburb
https://dev59.com/mYTba4cB1Zd3GeqP0gyG#26238356 - Mathieu
5个回答

32

在我的情况下,小部件未在小部件列表中显示的原因是部署目标号码太高了。对于小部件,我使用的是9.0版本。然而,我将我的iPhone从9.0降级到8.4,却忘记了为小部件更改版本号。

当我将它更改为8.4后,小部件立即出现在iPhone上。


这基本上也是我的问题,但有一个小变化。我将主应用程序设置为8.2的部署目标,但默认情况下小部件是9.x(不记得是哪个小版本)。由于我在8.4模拟器中进行测试,因此小部件未显示。我的观点是,我认为小部件将采用与主应用程序相同的部署目标。但它没有。 - ghostatron

5

请确保您在模拟器中运行的是包含应用而不是扩展程序。


4
我曾经见过这个问题,当应用程序和扩展之间的bundleID不匹配时会出现此问题。
例如(正确的):
应用程序的bundleid: com.yourcompany.myapp 扩展的bundleid: com.yourcompany.myapp.myextension
扩展需要具备完整的应用程序bundleID,后跟自己的名称。

0

请确保:

  1. "Deployment Target" 与包含应用程序的相同 (@vomako 的答案);
  2. Bundle ID 遵循正确的格式: "com.yourcompany.myapp.myextension",而您的包含应用程序是 "com.yourcompany.myapp" (@RohitGupta 的答案);
  3. 在调试时,您需要运行小部件/扩展方案 (不是包含应用程序的方案。但如果要归档以提交到 App Store,则使用包含应用程序的方案);
  4. "Build Settings" 的 "WRAPPER_EXTENSION" 是 "appex"。

所有答案(甚至官方文档)都没有提到第4点,但在我的情况下发生了。

我为工作区中的现有项目创建了 Today Widget,但根本不起作用。然而,当我创建纯新项目并添加 Today Widget 时,它可以正常工作。然后我逐一比较了 Build Setting 并发现了这个差异:为现有项目创建的是 "app",而不是 "appex"。

将其更改为 "appex" 后,就可以正常工作了。


另外,为了通过应用审核,您必须:

  • 在小部件/扩展的架构构建设置中包括arm64(iOS)或x86_64架构(MacOS);
  • 无论您选择哪个目标设备系列作为您的容器应用程序的目标设备系列,都必须将“iPhone/iPad”(有时称为通用)指定为您的应用程序扩展的目标设备系列;
  • 链接到嵌入式框架的容器应用程序必须包含arm64(iOS)或x86_64(OS X)架构构建设置;
  • 始终选择“Frameworks”作为您的复制文件构建阶段目标(不要选择“SharedFramework”目标)。

0
在我的情况下,应用程序目标的“嵌入应用扩展”构建阶段缺少appex文件:

Missing appex file


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接