Ich wickle eine bestehende Web-App (Rails) als cordova app
in einem Webview ein. Ich öffne die Homepage auf onDeviceReady. Anschließend Registrierung für die Push-Benachrichtigung.Phonegap - Push-Benachrichtigung mit eingebetteter Web-App (InAppBrowser-Fenster)
var ref = cordova.InAppBrowser.open(window.app_url,
'_blank', 'location=no,clearsessioncache=no');
setupPushNotifications(window.app_url, ref);
Ich verwende phonegap-plugin-push
für Push-Benachrichtigungen.
push.on('registration', function(data) {
saveRegistrationId(app_url, data);
});
Ich möchte die Benachrichtigung registrationId im Zusammenhang mit einem angemeldeten Benutzer in der Web App zuordnen.
Dies scheint ohne Probleme zu funktionieren, wenn Sie die phonegap Entwickler-App verwenden. Aber dies ruft nicht die App rails auf, um die Registrierungs-ID zu speichern, wenn ich die android-debug.apk
auf meinem Gerät installiere.
Der Gehalt an config.xml
<access origin="*" />
<allow-navigation href="http://192.168.1.3:8000" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
Ich habe auch versucht _self
, in der gleichen webview zu öffnen. SetupPushNotifications wird nicht ausgeführt.
Der Code für die Registrierung der Token
function saveRegistrationId(app_url, data) {
// this is our payload for the POST request to server
// data = {registrationId: 'XXXXX', registrationType: 'FCM'}
const device_data = Object.assign(data, this.device);
const url = app_url + "/mobile_devices";
navigator.notification.alert(data.registrationId);
navigator.notification.alert(url);
var httpRequest = new XMLHttpRequest();
httpRequest.open('POST', url);
httpRequest.onreadystatechange = function() {
navigator.notification.alert('readyState : ' + httpRequest.readyState);
navigator.notification.alert('status : ' + httpRequest.status);
if (httpRequest.readyState>3 && httpRequest.status==200) { console.log(httpRequest.responseText); }
};
httpRequest.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
httpRequest.setRequestHeader('Content-Type', 'application/json');
httpRequest.send(JSON.stringify({device: device_data}));
}
Haben Sie Ihre 'cordova-plugin-whitelist' konfiguriert? Probieren Sie auch die Chrome-Entwicklungstools aus, um die App auf JS/Netzwerkfehler zu überprüfen, wenn sie auf dem tatsächlichen Gerät ausgeführt werden. – wildabeast
Ich habe die Frage mit den Einstellungen in der Datei config.xml aktualisiert. – naruvimama
Sind JS-Fehler/Netzwerkfehler in der Javascript-Konsole zu sehen? – wildabeast