Est-il un moyen standard pour vérifier les mises à jour dans un widget Dashboard?

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

  •  09-10-2019
  •  | 
  •  

Question

Je vous écris un widget Dashboard dans Dashcode, et je voudrais ajouter une sorte de check-pour-mises à jour des fonctionnalités. Je l'ai déjà regardé dans Étincelle, mais AFAICT ce n'est pas applicable aux widgets comme celui-ci. Y at-il une bibliothèque couramment utilisée pour faire la vérification de mise à jour, ou devrai-je développer mon propre système?

Je ne ai besoin d'une configuration très simple ... la vérification automatique des nouvelles versions serait un plus, mais si l'utilisateur devait cliquer sur un bouton afin de vérifier que serait OK avec moi.

Était-ce utile?

La solution

Dans la mesure où « est là une fonction qui ... » alors je ne suis pas venu à travers elle.

Ce que je faisais était comme suit

Dans le plist il y a la version du widget et vous mettez le nombre là-bas, permet de dire que 1,0. Ce qui vous devriez être en mesure d'accéder et à utiliser. (Voir code) Pour des raisons que je ne l'ai pas et a ajouté ce global var widget_version = « 1.4 »; puis mis à jour que lorsque le widget mis à jour.

Ensuite, sur un serveur accessible par le Web que vous créez un fichier php (ou autre) qui a le nombre de la version actuelle du widget. laisse à nouveau dire 1.1.

Ensuite, vous écrivez une fonction javascript que va vérifier cette version widget contre la version du serveur et afficher un graphique ou un message pour indiquer à l'utilisateur. Il est préférable de laisser l'utilisateur décider si elles veulent mettre à niveau plutôt que de le faire automatiquement.

Voici le code i utilisé. S'il vous plaît copier ou pirater que vous le souhaitez.

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 this helps

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top