0

私はphonegap-plugin-pushを使用して、Cordovaアプリケーションで通知を受け取ります。私はテストのためにandroid Marsh-mellowに展開しています。背景CordovaのFirebaseプッシュ通知

アプリがバックグラウンドの場合は、Firebase Consoleで受け取った通知の内容を確認して保存します。アプリは私がきちんと内容(タイトル、メッセージ、データなど)を受信し、私はそれらを見ることができています(画面上の)フォアグラウンドにあるときは

document.addEventListener("deviceready",onDeviceReady,false); 
    function onDeviceReady(){ 

     var push = PushNotification.init({ "android": {"senderID": "91254247XXXX"}}); 

     push.on('registration', function(data) { 
      console.log(data.registrationId); 
      //document.getElementById("gcm_id").innerHTML = data.registrationId; 
     }); 

     push.on('notification', function(data) { 

      alert("On Notification function!!"); 
      // data.message, 
      // data.title, 
      // data.count, 
      // data.sound, 
      // data.image, 
      // data.additionalData 
      console.log("notification event"); 
      console.log(JSON.stringify(data)); 
      alert(JSON.stringify(data)); 
      //Do something 
     }); 

     push.on('error', function(e) { 
      alert(e); 
     }); 
    } 

- ここ

は私のコードですアプリ内のアラートボックスに直接表示されます。

アプリがの背景(画面には表示されていませんが、バックラウンドで実行中)の場合、通知領域に通知が表示されます。受信した通知をクリックすると、アプリで最後に開いたページにリダイレクトされます。

機能push.on('notification', function(data) {}は呼び出されません。警告メッセージは表示されません。通知メッセージとデータへのアクセス方法を教えてもらえますか?

答えて

0

調査の2日後に回答が見つかりました。データフィールドに「content-available」を1に設定する必要があります。それ以外の場合は、アプリがバックグラウンドにある場合は通知ブロックを呼び出さないでください。

これは現時点ではGoogle Firebase Consoleでは実行できません。

firebase serversのいずれかを別途使用して、send our custom payload messages(データまたは通知、またはその両方)を受け取る必要があります。

plugin's GitHub Pageの詳細情報は、バックグラウンド通知でご覧いただけます。

NodeJs firebase-adminを使用しました。私はこれらのsetup guidelinesとこれらのsteps for sending messagesを追跡してくれました。私も同じ使用してPHPサーバを実装し

var admin = require("firebase-admin"); 

var serviceAccount = require("pushnotificationapp-xxxxx.json"); //this is the service account details generated from server 

admin.initializeApp({ 
    credential: admin.credential.cert(serviceAccount), 
    databaseURL: "https://pushnotificationappxxxxx.firebaseio.com/" //your database URL here. 
}); 

var registrationToken = "eYjYT0_r8Hg:APA91bG0BqWbT7XXXXX....."; //registration token of the device 
var payload ={ 
    "data": { 
     "title": 'Test Push', 
     "message": 'Push number 1', 
     "info": 'super secret info', 
     "content-available": '1' //FOR CALLING ON NOTIFACATION FUNCTION EVEN IF THE APP IS IN BACKGROUND 
    } 
}; 

//send the notification or message 
admin.messaging().sendToDevice(registrationToken, payload) 
.then(function(response) { 
    console.log("Successfully sent message:", response); 
}) 
.catch(function(error) { 
    console.log("Error sending message:", error); 
}); 

UPDATE - ここ

は私の作業コード(NodeJS)があります。 は、ここで私は同じ問題を経た

<?php 

$url = 'https://fcm.googleapis.com/fcm/send'; 

$data = 
    array(
      "to" => "eYjYT0_r8Hg:APA91bG0BqWbT7XXXXX.....", 
      "data" => array(
       "title"=> 'Test Push', 
       "message"=> 'Push number 1', 
       "info"=> 'super secret info', 
       "content-available"=> '1') 

    ); 

// use key 'http' even if you send the request to https://... 
$options = array(
    'http' => array(
     'header' => array("Content-Type:application/json", 
     "Authorization:key=AAAA1HfFM64:APA91XXXX...."), //this is the server authorization key from project settings tab in your Firebase Project 
     'method' => 'POST', 
     'content' => json_encode($data) 
    ) 
); 

$context = stream_context_create($options); 
$result = file_get_contents($url, false, $context); 

if ($result === FALSE) { echo "Caught an error"; } 
else{ 
    echo $result; 
} 
?> 
0

をサーバーによってFCMにHTTP POSTを使用して通知を送信するために私の作業PHPのコードですが、私は追加「コンテンツ利用可能」:「1」もなく、自分の携帯電話は、いずれかを受けていませんでしたバックグラウンドプッシュ。

は最終的に私はここに述べたように、それは私の携帯電話に問題があることがわかった:https://github.com/phonegap/phonegap-plugin-push/blob/master/docs/PAYLOAD.md#huawei-and-xiaomi-phones

Huawei社と小米科技電話

これらの携帯電話は、あなたがもはやできなくなることを閉じてアプリが強制されたときに特定の癖を持っていますアプリが再起動されるまで通知を受け取ることができます。背景通知を受け取るには:

あなたのHuaweiデバイスで、[設定]> [保護されたアプリケーション]> [マイアプリ]にチェックを入れます。 あなたのXiaomiで、お使いの携帯電話があなたのアプリで「自動スタート」プロパティが有効になっていることを確認してください。 あなたのAsusで、お使いの携帯電話があなたのアプリで「自動スタート」プロパティが有効になっていることを確認してください。

誰かを助けることを願っています。