2016-02-10 140 views
1

我試圖在我的Safari擴展上設置自動更新,它似乎沒有工作。這是我到目前爲止所嘗試過的。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瀏覽器與我的分機安裝了將平「更新清單網址」在擴展建設者設置。如果版本與下載網址的擴展名不匹配,則會進行更新。

.plist文件位於我的服務器上,並且服務器正在通過「更新清單URL」正確設置擴展。我可以從我的網站下載擴展程序,但是當我上傳新的擴展程序版本並更新plist文件時,系統沒有提示我在Safari>首選項>擴展程序中更新我的擴展程序。

在我一直在做的事情中是否有可能缺失的東西?

回答

0

嘗試在您的計算機上設置日期或將來的日期。我認爲Safari只會每天檢查一次更新。或者你已經解決了這個問題?

0

我會嘗試直接點擊您的'更新清單'網址,並確保它所調用的文件確實比您當前的擴展版本更高。如果檢查結果正常,那麼您當前的擴展版本可能沒有設置更新清單URL,因此您的更新文件根本沒有被調用!

在這種情況下,您需要找出當前版本指向哪個更新清單URL並將您的update.plist文件上傳到那裏,並且在每次發佈時都會持續執行此操作,以防止用戶從v1.0(包含更新問題)當v3.0退出使用新的更新url時,他們需要一種方法來打破它們對舊更新清單url的依賴性......或者要求新用戶直接從服務器安裝更新版本,並使用正確的更新清單URL字段設置以及上面發佈的update.plist。

作爲測試,我會從服務器安裝擴展的最新版本,在Safari瀏覽器首選項中關閉自動更新,以便在有新版本時通知您,然後將版本升級到4.0.1或更低版本並將新文件上傳到服務器。然後重新啓動safari並查看是否有任何東西在safari擴展偏好內觸發。

0

我已通過Wireshark驗證了更新服務器的通信。看來,Safari瀏覽器會檢查updates.plist(在擴展Info.plist中指定一個作爲

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

)任何時候你訪問首選項 - >擴展 - >更新。如果服務器以304 Not Modified響應,則Safari不會採取進一步的行動。如果plist包含更新版本的擴展(並且它是plist中的唯一版本),則Safari會下載並更新擴展。