Safari 扩展自动更新

Posted

技术标签:

【中文标题】Safari 扩展自动更新【英文标题】:Safari extension automatic update 【发布时间】:2016-02-10 07:17:24 【问题描述】:

我正在尝试在我的 Safari 扩展程序上设置自动更新,但它似乎不起作用。这是我到目前为止所尝试的。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
   <key>Extension Updates</key>
   <array>
     <dict>
       <key>CFBundleIdentifier</key>
       <string>com.COMPANY_NAME.safari.EXTENSION_NAME</string>
       <key>Developer Identifier</key>
       <string>MY_IDENTIFIER</string>
       <key>CFBundleVersion</key>
       <string>4</string>
       <key>CFBundleShortVersionString</key>
       <string>4</string>
       <key>URL</key>
       <string>PATH_TO_EXTENSION_DOWNLOAD</string>
     </dict>
   </array>
</dict>
</plist>

据我了解,只要下载了扩展程序的人打开安装了我的扩展程序的 Safari,它就会 ping 扩展程序构建器中设置的“更新清单 URL”。如果版本与下载 URL 上的扩展名不匹配,则会进行更新。

.plist 文件在我的服务器上,并且扩展程序正在从服务器提供,并且“更新清单 URL”设置正确。我可以从我的网站下载扩展程序,但是当我上传新的扩展程序版本并更新 plist 文件时,系统不会提示我在 Safari > 首选项 > 扩展程序中更新我的扩展程序。

我一直在做的事情中可能缺少什么吗?

【问题讨论】:

【参考方案1】:

尝试将计算机上的日期设置为一天或未来。我认为 Safari 每天只检查一次更新。还是您已经解决了这个问题?

【讨论】:

【参考方案2】:

我会尝试直接点击您的“更新清单”网址,并确保它调用的文件确实是比您拥有的当前扩展名更大的版本。如果检查正常,那么您当前版本的扩展可能没有设置更新清单 URL,因此根本不会调用您的更新文件!

在这种情况下,您需要找出当前版本指向的更新清单 URL 并将您的 update.plist 文件上传到那里,并在每次发布时不断执行此操作,以防 v1.0 的用户(有更新问题)即将到来当 v3.0 使用新的更新 url 退出时,他们需要一种方法来打破他们对旧更新清单 url 的依赖......或者要求新用户直接从服务器安装您的更新版本,并设置正确的更新清单 URL 字段以及您在上面发布的 update.plist。

作为测试,我将从您的服务器安装最新版本的扩展,关闭 safari 偏好设置中的自动更新,以便在有新版本时通知您,然后将版本升级到 4.0.1 或其他较小的版本,然后将新文件上传到服务器。然后重新启动 safari 并查看 safari 扩展首选项中是否有任何触发。

【讨论】:

【参考方案3】:

我已经验证了使用 Wireshark 更新服务器的通信。似乎 Safari 会检查 updates.plist (在扩展 Info.plist 中指定为

<key>Update Manifest URL</key>
<string>URL/updates.plist</string>

) 任何时候访问首选项 -> 扩展 -> 更新。如果服务器以 304 Not Modified 响应,Safari 将不采取进一步措施。如果 plist 包含更新版本的扩展(并且它是 plist 中的唯一版本),Safari 会下载并更新扩展。

【讨论】:

以上是关于Safari 扩展自动更新的主要内容,如果未能解决你的问题,请参考以下文章

Zoom支持自动生成字幕;SharePlay上线;Safari 更新导致大量bug |WebRTC风向

苹果手机的safari浏览器怎么设置全屏

Visual studio2013 扩展和更新在哪?

怎么禁止chrome浏览器插件自动更新

iphone手机用safari上网每次app store都会自动跳出

Vimeo 视频自动播放在 Safari 11 中不起作用:NotAllowedError