すべての登録ID(プッシュトークン)をDBに保存し、iPhoneからユーザーに通知を送信することを考えています。このようなことを試しましたが、通知がありませんでした。
func sendPNMessage() {
FIRMessaging.messaging().sendMessage(
["body": "hey"],
to: TOKEN_ID,
withMessageID: "1",
timeToLive: 108)
}
私が間違っていること、または多分それはまったく不可能ですか?
現在、アプリケーション自体からメッセージを送信することはできません。 Firebase Webコンソールから、またはサーバー側APIを使用してカスタムサーバーからメッセージを送信できます。
(http呼び出しなどを介して)サーバーに接続すると、そのサーバーがユーザーにメッセージを送信します。このようにして、サーバーのAPI-KEYが確実に保護されます。
PS:sendMessage(..)
apiはアップストリーム機能と呼ばれ、サーバーがFCMサーバーとXMPP接続している場合は、アプリからサーバーにメッセージを送信するために使用できます。
はい、Firebaseを介してプッシュ通知を送信できます。サーバーキーをクライアントに含めないでください。 「それほど優秀ではない人々のために」それを見つけて何かをする方法があります...それを達成するための適切な方法は、クライアントがアプリサーバーに通知を送信するように指示することです。
HTTP-PostをGoogle-API-Endpointに送信する必要があります。
次のヘッダーが必要です。
Content-Type: application/json
Authorization: key={your_server_key}
You can obtain your server key within in the Firebase-Project.
HTTP-Post-Content: Sample
{
"notification": {
"title": "Notification Title",
"text": "The Text of the notification."
},
"project_id": "<your firebase-project-id",
"to":"the specific client-device-id"
}
Google Cloud Functionsを使用すると、アプリサーバーなしでデバイス間でプッシュ通知を送信できるようになりました。
Google Cloud Functionsのドキュメントから:
開発者はCloudFunctionsを使用して、ユーザーの関心を維持し、アプリに関する関連情報を最新の状態に保つことができます。たとえば、ユーザーがアプリ内でお互いのアクティビティをフォローできるアプリを考えてみましょう。このようなアプリでは、Realtime Databaseの書き込みによってトリガーされて新しいフォロワーを保存する機能により、Firebase Cloud Messaging(FCM)通知を作成して、適切なユーザーに新しいフォロワーを獲得したことを知らせることができます。
例:
この関数は、フォロワーが格納されているRealtimeDatabaseパスへの書き込み時にトリガーされます。
この関数は、FCMを介して送信するメッセージを作成します。
FCMは、通知メッセージをユーザーのデバイスに送信します。
これはデモプロジェクトです FirebaseとGoogleCloudFunctionsを使用してデバイス間プッシュ通知を送信します。