Aus einer Hybridanwendung POV. Dies ist ein Javascript-Beispiel. Ich habe eine Fußzeile "Update verfügbar" in meinem Hauptmenü. Wenn ein Update verfügbar ist (dh meine Versionsnummer in der Konfigurationsdatei ist kleiner als die abgerufene Version, zeigen Sie die Fußzeile an). Dadurch wird der Benutzer zum App / Play Store weitergeleitet, wo der Benutzer auf die Schaltfläche "Update" klicken kann.
Ich erhalte auch die neuen Daten (z. B. Versionshinweise) und zeige diese beim Anmelden modal an, wenn es das erste Mal in dieser Version ist.
Legen Sie auf Gerätebereit Ihre Geschäfts-URL fest
if (device.platform == 'iOS')
storeURL = 'https://itunes.apple.com/lookup?bundleId=BUNDLEID';
else
storeURL = 'https://play.google.com/store/apps/details?id=BUNDLEID';
Die Methode Update Available kann beliebig oft ausgeführt werden. Meins wird jedes Mal ausgeführt, wenn der Benutzer zum Startbildschirm navigiert.
function isUpdateAvailable() {
if (device.platform == 'iOS') {
$.ajax(storeURL, {
type: "GET",
cache: false,
dataType: 'json'
}).done(function (data) {
isUpdateAvailable_iOS(data.results[0]);
}).fail(function (jqXHR, textStatus, errorThrown) {
commsErrorHandler(jqXHR, textStatus, false);
});
} else {
$.ajax(storeURL, {
type: "GET",
cache: false
}).done(function (data) {
isUpdateAvailable_Android(data);
}).fail(function (jqXHR, textStatus, errorThrown) {
commsErrorHandler(jqXHR, textStatus, false);
});
}
}
iOS-Rückruf: Apple hat eine API, die sehr einfach zu bekommen ist
function isUpdateAvailable_iOS (data) {
var storeVersion = data.version;
var releaseNotes = data.releaseNotes;
// Check store Version Against My App Version ('1.14.3' -> 1143)
var _storeV = parseInt(storeVersion.replace(/\./g, ''));
var _appV = parseInt(appVersion.substring(1).replace(/\./g, ''));
$('#ft-main-menu-btn').off();
if (_storeV > _appV) {
// Update Available
$('#ft-main-menu-btn').text('Update Available');
$('#ft-main-menu-btn').click(function () {
openStore();
});
} else {
$('#ft-main-menu-btn').html(' ');
// Release Notes
settings.updateReleaseNotes('v' + storeVersion, releaseNotes);
}
}
Android Callback: PlayStore muss man kratzen, da man sieht, dass die Version relativ einfach zu greifen ist und was neu ist, nehme ich das HTML anstelle des Textes, da ich auf diese Weise ihre Formatierung verwenden kann (dh neue Zeilen usw.)
function isUpdateAvailable_Android(data) {
var html = $(data);
var storeVersion = html.find('div[itemprop=softwareVersion]').text().trim();
var releaseNotes = html.find('.whatsnew')[0].innerHTML;
// Check store Version Against My App Version ('1.14.3' -> 1143)
var _storeV = parseInt(storeVersion.replace(/\./g, ''));
var _appV = parseInt(appVersion.substring(1).replace(/\./g, ''));
$('#ft-main-menu-btn').off();
if (_storeV > _appV) {
// Update Available
$('#ft-main-menu-btn').text('Update Available');
$('#ft-main-menu-btn').click(function () {
openStore();
});
} else {
$('#ft-main-menu-btn').html(' ');
// Release Notes
settings.updateReleaseNotes('v' + storeVersion, releaseNotes);
}
}
Die Open-Store-Logik ist einfach, aber der Vollständigkeit halber
function openStore() {
var url = 'https://itunes.apple.com/us/app/appname/idUniqueID';
if (device.platform != 'iOS')
url = 'https://play.google.com/store/apps/details?id=appid'
window.open(url, '_system')
}
Stellen Sie sicher, dass Play Store und App Store auf die Whitelist gesetzt wurden:
<access origin="https://itunes.apple.com"/>
<access origin="https://play.google.com"/>