Поскольку «есть функция, которая будет ...», то я не сталкивался с ней.
То, что я сделал, было следующим:
В plist есть версия виджета, и вы поместили туда число, скажем, 1.0.Который вы должны иметь возможность доступа и использования.(см. код) По причине, которую я не сделал и добавил это глобальное var widget_version = "1.4";и затем обновляется, когда обновляется виджет.
Затем на сервере, доступном через Интернет, вы создаете файл php (или любой другой), который имеет номер текущей версии виджета.Снова допустим, скажем, 1.1.
Затем вы пишете функцию javascript, которая проверяет текущую версию виджета на соответствие версии сервера и отображает графическое изображение или сообщение, чтобы сообщить пользователю.Лучше позволить пользователю решить, хотят ли они обновить его, а не делать его автоматическим.
Ниже приведен код, который я использовал.Пожалуйста, скопируйте и / или взломайте, как хотите.
function getSoftwareUpdate() {
// so use the built in CURL to do a REST call n.b. in widget preference you will need to check 'allow network access'
var softwareUpdate = widget.system("/usr/bin/curl 'http://api.yourserver.com/widget/wfccupdate.php'", null).outputString;
//alert(softwareUpdate); // tells you the function has been called
//alert("the update number from the REST " + softwareUpdate); // for debugging will show the key
// in main.js add this line
// var widget_version = "1.4"; // this is changed when you update the widget code for new release
// yes it's a global variable and bad but i was in a hurry
// the following line should get the widget number but for some reason i didn't do it
// localVersion = widget.preferenceForKey(preferenceForKey);
//alert("the internal preference key " + widget_version);
// then check to see if they match
if(softwareUpdate == widget_version)
{ hide_update('softwareupdate')
}
else
{show_update('softwareupdate')
}
}
function hide_update(el) { // hide the update graphic
if(document.getElementById(el))
{
if(document.getElementById(el).style.display != "none")
document.getElementById(el).style.display = "none";
}
}
function show_update(el) { // show the update graphic
if(document.getElementById(el)) {
if(document.getElementById(el).style.display == "none")
document.getElementById(el).style.display = "block";
}
}
// this is the php that is called by curl and acts as REST
<?php
// data
$UPDATE_database = <<<_UPDATE_
<?xml version="1.0" encoding="utf-8" ?>
<update>
<widgetversion>1.1</widgetversion>
</update>
_UPDATE_;
// load data
$xml = simplexml_load_string($UPDATE_database);
$result = $xml->xpath("widgetversion");
print $result[0];
?>
Надеюсь, это поможет