Gibt es eine Standardmethode für Updates in einem Dashboard-Widget zu überprüfen?

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

  •  09-10-2019
  •  | 
  •  

Frage

Ich schreibe einen Dashboard-Widget in Dashcode, und ich möchte eine Art Check-for-Updates Funktionalität hinzuzufügen. Ich habe bereits in Sparkle aussehen, aber AFAICT ist es nicht für Widgets wie diese. Gibt es eine häufig verwendete Bibliothek nach Updates zu tun, oder muss ich auf mein eigenes System entwickeln?

Ich brauche nur eine sehr einfache Einrichtung ... automatisch nach neuen Versionen Überprüfung wäre ein Plus, aber wenn der Benutzer auf eine Schaltfläche klicken, um hat das würde bei mir in Ordnung sein zu überprüfen.

War es hilfreich?

Lösung

Da „gibt es eine Funktion, die wird ...“, dann habe ich nicht über sie kommen.

Was ich tat, war wie folgt

In dem plist gibt die Version des Widgets ist und Sie setzen die Zahl dort, läßt 1.0 sagen. Welche sollten Sie für den Zugriff und die Nutzung der Lage sein. (Siehe Code) Für Grund, warum ich diese globale var widget_version nicht und hinzugefügt haben = „1.4“; und dann aktualisiert, wenn das Widget aktualisiert.

Dann auf einem Server zugänglich im Web erstellen Sie eine PHP (oder was auch immer) Datei, die die Anzahl der aktuellen Version des Widgets hat. lässt wieder 1.1 sagen.

Sie dann eine Javascript-Funktion schreiben, als wird diese aktuelle Widget-Version gegen die Version Server überprüfen und eine Grafik oder Meldung an den Benutzer zu sagen. Am besten ist es der Benutzer entscheiden zu lassen, ob sie lieber aktualisieren möchten, als es die automatische Herstellung.

Im Folgenden ist der Code, den ich verwenden. Bitte kopieren und oder hacken, wie Sie wollen.

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

Hope, das hilft

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top