Xcode iOS 8 Today小部件在运行项目时不显示

Xcode iOS 8 Today小部件在运行项目时不显示,xcode,ios8,xcode6,ios8-today-widget,Xcode,Ios8,Xcode6,Ios8 Today Widget,我有一个有2个目标的应用程序,并添加了一个today小部件。当我运行它时,它不会出现在“今日通知编辑/不包括”部分,通常在我的其他应用程序中第一次出现。知道会出什么问题吗?我得到了权利缺失警告的扩展,但我得到了这对那些工作太(已尝试添加一个,没有帮助) 此外,如果我尝试将其作为进程附加到“调试”菜单下,它根本不会出现在那里/ 我曾尝试从模拟器中删除应用程序并重置等,我曾尝试使用另一个具有多个目标的应用程序,因为我认为这可能是问题所在,但另一个可以工作 有没有其他人有类似的经历或者可以提出任何建议

我有一个有2个目标的应用程序,并添加了一个today小部件。当我运行它时,它不会出现在“今日通知编辑/不包括”部分,通常在我的其他应用程序中第一次出现。知道会出什么问题吗?我得到了权利缺失警告的扩展,但我得到了这对那些工作太(已尝试添加一个,没有帮助)

此外,如果我尝试将其作为进程附加到“调试”菜单下,它根本不会出现在那里/

我曾尝试从模拟器中删除应用程序并重置等,我曾尝试使用另一个具有多个目标的应用程序,因为我认为这可能是问题所在,但另一个可以工作

有没有其他人有类似的经历或者可以提出任何建议


编辑2014年10月6日:我仍然没有找到解决方案,但我的项目没有使用arm64。这可能是问题所在吗?我曾尝试从其他项目中删除arm64,但我认为Xcode 6不允许这样做,因此我无法测试它,有人知道这是否有可能吗?

当应用程序和扩展之间的bundleID不匹配时,我看到了这个问题

示例(正确):

App bundleid:com.yourcompany.myapp

Ext bundleid:com.yourcompany.myapp.myextension


扩展需要有应用程序的整个bundleID,后跟它自己的名称。

在我的例子中,小部件列表中没有显示小部件的原因是部署目标号太高。对于小部件,我使用了9.0。然而,我把我的iPhone从9.0降级到了8.4,忘记了为小部件更改它


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

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

确保:

  • “部署目标”与包含应用程序相同(@vomako的答案)
  • Bundle ID采用正确的格式:“com.yourcompany.myapp.myextension”,而包含应用的是“com.yourcompany.myapp”(@RohitGupta的答案)
  • 调试时,您需要运行小部件/扩展方案(此处不包含应用程序的方案。但如果要提交到应用程序商店,请使用包含应用程序的方案)
  • “构建设置”的“包装扩展”是“appex
  • 第4点并没有在所有答案中提及(甚至是官方文件),但在我的案例中发生了

    我在一个工作区中为我现有的项目创建了Today小部件,根本不起作用。然而,当我用Today小部件创建一个全新的项目时,它工作得很好。然后我一个接一个地比较构建设置,发现了这个差异:为我现有项目创建的是“app”,而不是“appex”

    将其更改为“appex”后,可以正常工作


    另外,作为提示,为了通过应用程序审查,您必须

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

    在我的例子中,应用目标的构建阶段“嵌入应用扩展名”缺少appex文件:


    我认为(缺少arm64)是问题所在,但我记不起在哪里读到过。这基本上也是我的问题,但有点曲折。我将我的主应用程序设置为8.2的部署目标,但默认情况下,小部件是9.x(不记得次要版本)。因为我是在8.4模拟器中测试的,所以小部件没有出现。我的观点是,我假设小部件将采用与主应用程序相同的部署目标。事实并非如此。