【发布时间】:2019-03-01 02:24:19
【问题描述】:
我遇到了一个奇怪的问题,我第二次运行我的 Safari 应用程序扩展时,它不会显示在 Safari 中。
- 打开 Xcode。
- 新建 > 项目。
- 在“其他”下,选择 Safari Extension App,然后单击“下一步”。
- 在此“产品名称”屏幕上输入您想要的任何内容,然后单击“下一步”。
- 点击“创建”。
- 点击 Xcode 左上角的 Play 图标运行项目。
- 它将打开一个小应用程序,底部有一个按钮,文本为:“在 Safari 扩展首选项中打开”。
- 它可能不会出现。如果是,请跳至 10。
- 在 Safari 的标题菜单中点击“开发”,点击“允许未签名的扩展”。
- 出现后,选中复选框以启用它。
- 点击左上角的停止图标停止 Xcode 运行。
- 在插件的 Info.plist 中更改一个值,例如将
SFSafariWebsiteAccess.Level从“Some”更改为“All”。 - 点击 Xcode 中的播放图标。
- Safari 会告诉您扩展权限已更改。确认这些更改,扩展程序将不再显示。
如果我更改其他值,也会发生同样的事情。如果我完全保持扩展代码和设置不变,则不会出现问题。但是一旦我改变了一些值,即使我把这些设置改回来,它也会完全崩溃。
这发生在两台不同的 Mac 上,分别是 10.13 和 10.14 以及最新的 Xcode。
【问题讨论】:
-
通常情况下,当扩展程序已发布/发送给用户(权限、扩展程序名称,...)时,项目设置不必更改,否则扩展程序开发人员可能会严重滥用它。所以实际上这是 Safari 开发者选择保护用户的行为。如果开发人员制作的应用程序只有很少且无害的权限,然后在足够多的用户安装了他的应用程序后将权限更改为有害的权限,那会很糟糕......这就是 Safari(不是 Xcode)限制的原因通过自动禁用扩展来实现。
标签: xcode safari safari-app-extension