Safari扩展自动更新

时间:2016-02-10 07:17:25

标签: safari safari-extension

我尝试在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通&#34;更新清单URL&#34;在扩展构建器中设置。如果版本与下载URL处的扩展名不匹配,则会进行更新。

.plist文件位于我的服务器上,并且正在使用&#34;更新清单URL&#34;从服务器提供扩展程序。设置正确。我可以从我的网站下载扩展程序但是当我上传新的扩展程序版本并更新plist文件时,我没有被提示在Safari中更新我的扩展程序&gt;偏好&gt;扩展。

我所做的事情中是否有任何可能缺失的东西?

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我会尝试点击你的更新清单&#39;直接确认URL并确保其调用的文件确实比您当前的扩展名更大。如果检查结果正常,那么您当前版本的扩展程序可能没有设置更新清单URL,因此您的更新文件根本不会被调用!

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

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

答案 2 :(得分:0)

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

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

)随时访问偏好设置 - &gt;扩展程序 - &gt;更新。如果服务器以304 Not Modified响应,则Safari不会执行进一步操作。如果plist包含更新版本的扩展(并且它是plist中唯一的版本),Safari会下载并更新扩展。