2017-10-19 16 views
0

Webビューで既存のWebアプリケーション(Rails)をcordova appとしてラッピングしています。私はonDeviceReadyでホームページを開きます。プッシュ通知に登録すると、それに続きます。Phonegap - 埋め込みWebアプリケーションを使用したプッシュ通知(InAppBrowserウィンドウ)

var ref = cordova.InAppBrowser.open(window.app_url, 
          '_blank', 'location=no,clearsessioncache=no'); 
setupPushNotifications(window.app_url, ref); 

私は、プッシュ通知のためのphonegap-plugin-pushを使用しています。

push.on('registration', function(data) { 
    saveRegistrationId(app_url, data); 
}); 

ウェブアプリケーションのログインユーザーのコンテキストで通知登録IDを関連付けたいとします。

これは、phonegapデベロッパーアプリを使用するときに問題なく動作するようです。しかし、これは私のデバイスにandroid-debug.apkをインストールするときに、registrationIdを保存するためのレールアプリを呼び出すことはありません。

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:*" /> 

の内容は私も同じのWebViewで開くように、_selfを試してみました。 setupPushNotificationsは実行されません。

はトークン

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})); 
} 
+0

'cordova-plugin-whitelist'を設定しましたか?また、実際のデバイスで実行しているときに、クロム開発ツールを使用してJS /ネットワークエラーのアプリをチェックしてみてください。 – wildabeast

+0

質問をconfig.xmlファイルの設定で更新しました。 – naruvimama

+0

JavascriptコンソールにJSエラー/ネットワークエラーが表示されていますか? – wildabeast

答えて

0

問題を登録するためのコードは、index.htmlの中content-security-policyしていました。

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; img-src 'self' data: content:; connect-src 'self' http://192.168.1.3:8000;"> 

キーは、AjaxリクエストがWebアプリケーションに行うことを可能にする最後のセクション

connect-src 'self' http://192.168.1.3:8000; 

ました。

関連する問題