Есть ли стандартный способ проверить наличие обновлений в виджете приборной панели?

StackOverflow https://stackoverflow.com/questions/4369055

  •  09-10-2019
  •  | 
  •  

Вопрос

Я пишу виджет приборной панели на DashCode, и я хотел бы добавить какие-то функции для проверки обновлений. Я уже посмотрел в Sparkle, но в Afaict это не применимо к таким виджетам. Существует ли обычно используемая библиотека для проверки обновления, или я должен разработать мою собственную систему?

Мне нужна очень простая настройка ... автоматически проверяя для новых версий будет плюс, но если пользователь должен был нажать кнопку, чтобы проверить, что будет в порядке со мной.

Это было полезно?

Решение

Поскольку «Есть ли функция, которая будет ...», тогда я не наткнулся на него.

То, что я сделал, было следующим

В 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];
?>

Надеюсь это поможет

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top