1

Cloud Messagingを介してiOSデバイスに通知を送信するためにFirebase Cloud Functionsを使用します。 sendToDeviceメソッドはうまくいき、Firebase関数ログにエラーや警告なしで成功を約束しますが、iOSでは通知が表示されません。 Firebase Notificationsダッシュボードから通知を送信した場合、正常に機能し、通知がデバイスに表示されます。私はどこにバグがあるかも知りません。私が言ったように動作しても、バグはiOSアプリ側にある可能性がありますか?正常にsendToDeviceの後にFirebaseクラウドメッセージングが機能しない

Firebase設定:クラウド機能の

var functions = require('firebase-functions'); 
var admin = require('firebase-admin'); 
var config = functions.config(); 
admin.initializeApp(functions.config().firebase); 

パート:

APP.services.firebase.admin.database().ref('tokens/' + userId).once('value', function(snapshot) { 

    var userDevicesTokens = []; 

    snapshot.forEach(function(childSnapshot) { 
     userDevicesTokens.push(childSnapshot.key) 
    }); 

    if (userDevicesTokens.length === 0) { 
     console.warn('No tokens for user'); 
     return; 
    } 

    var payload = { 
     data: { 
      title: options.title, 
      text: options.text, 
      type: options.type, 
     } 
    }; 
    APP.services.firebase.admin.messaging().sendToDevice(userDevicesTokens, payload) 
     .then(function(response) { 

      console.log("Successfully sent message:", response); 

     }) 
     .catch(function(error) { 
      console.log("Error sending message:", error); 
     }); 

}) 

Firebaseクラウド機能は、ログ:

11: 52: 43.952 AM info newChatMessageTrigger 
Successfully sent message: { 
    results: [{ 
     messageId: '0:15016....' 
    }], 
    canonicalRegistrationTokenCount: 0, 
    failureCount: 0, 
    successCount: 1, 
    multicastId: 589.... 
} 

11: 52: 22.760 AM outlined_flag newChatMessageTrigger 
Function execution took 604 ms, finished with status: 'ok' 

11: 52: 22.252 AM outlined_flag newChatMessageTrigger 
Billing account not configured.External network is not accessible and quotas are severely limited.Configure billing account to remove these restrictions 

11: 52: 22.252 AM outlined_flag newChatMessageTrigger 
Function execution started 
+0

あなたの代わりに 'notification'メッセージペイロードを送信しようとしたことがあり:

ペイロードは、このようになりますでしょうか? –

答えて

2

私はそれはあなたのペイロードを持つ問題だと思います。

firebase関数でこのペイロードを1回試して、iOSに関する通知を受け取ったらお知らせください。

var payload = { 
     data: { 
      title: "Welcome to ChitChat Group", 
      message: "You may have new messages" 
     } 
    }; 
+0

それでも動作しません。以前のような同じログ – Damian

+0

私の答えを確認[ここ](https://stackoverflow.com/questions/45428888/how-do-i-give-notification-every-time-user-get-registered-to-my-app-クラウドを使う/ 45429100?noredirect = 1#comment77819438_45429100)。このクラウド機能を持つiOSへの通知は、ユーザーのデバイストークンを1つだけ考慮して受け取りました。 – Surjeet

+0

単一トークンも機能しません。 – Damian

0

私はFirebaseサポートに書き込みましたが、メッセージタイプに問題がありました。 Firebaseには、データと通知という2種類のメッセージがあります。この場合、タイプ通知(see documentation)を使用する必要があります。

var payload = { 
    notification: { 
     title: options.title, 
     body: options.text, 
    }, 
    data: { 
     type: options.type, 
    } 
}; 
関連する問題