答えて

2

Android側でこのコードを入力して、通知を送信するクラウド機能をトリガーしたい場合などです。

Message message = 
      new Message(timestamp, -timestamp, dayTimestamp, body, ownerUid, userUid); 
    mDatabase 
      .child("notifications") 
      .child("messages") 
      .push() 
      .setValue(message); 
    mDatabase 
      .child("messages") 
      .child(userUid) 
      .child(ownerUid) 
      .push() 
      .setValue(message); 
    if (!userUid.equals(ownerUid)) { 
     mDatabase 
       .child("messages") 
       .child(ownerUid) 
       .child(userUid) 
       .push() 
       .setValue(message); 
    } 

そして、あなたはあなたのAndroidアプリでメッセージの送信時に起動されますあなたのFirebaseクラウド機能の初期化ディレクトリにこのコード:

exports.sendNotification = functions.database.ref('/notifications/messages/{pushId}') 
.onWrite(event => { 
    const message = event.data.current.val(); 
    const senderUid = message.from; 
    const receiverUid = message.to; 
    const promises = []; 

    if (senderUid == receiverUid) { 
     //if sender is receiver, don't send notification 
     promises.push(event.data.current.ref.remove()); 
     return Promise.all(promises); 
    } 

    const getInstanceIdPromise = admin.database().ref(`/users/${receiverUid}/instanceId`).once('value'); 
    const getReceiverUidPromise = admin.auth().getUser(receiverUid); 

    return Promise.all([getInstanceIdPromise, getReceiverUidPromise]).then(results => { 
     const instanceId = results[0].val(); 
     const receiver = results[1]; 
     console.log('notifying ' + receiverUid + ' about ' + message.body + ' from ' + senderUid); 

     const payload = { 
      notification: { 
       title: receiver.displayName, 
       body: message.body, 
       icon: receiver.photoURL 
      } 
     }; 

     admin.messaging().sendToDevice(instanceId, payload) 
      .then(function (response) { 
       console.log("Successfully sent message:", response); 
      }) 
      .catch(function (error) { 
       console.log("Error sending message:", error); 
      }); 
    }); 
}); 

をチャットアプリケーションであなたがメッセージを送信するとき詳細はこちらをご確認ください - Serverless notifications with Cloud Functions for Firebase

+0

ありがとうございます!しかし、私はそれを確認した、それは通知を送信しない、単にメッセージをチャットウィンドウに入れます。 –

+0

@ kanwal kaur、あなたはGithubページに記載されているサーバーコードを入力しようとしましたが、この[関数](https://github.com/MahmoudAlyuDeen/FirebaseIM/blob/master/server/functions/index.js)は新しい子ノードが追加された(つまりあなたのメッセージ)と通知がデバイスに送信されたときにトリガされます。 – hsm59

+0

このコードと[このチュートリアル](https://firebase.googleblog.com/2016/08/sending-notifications-between-android.html)を組み合わせると、あなたは長い道のりを取るはずです。 –

関連する問題