2016-09-16 10 views
0

ユーザがログインするときにユーザUIDでトピックを購読するようにアプリケーションをセットアップします。ユーザーが別のユーザーにメッセージを送信するたびに、私はそのプッシュをトリガーしたいと思っている以下の機能を呼び出すことになります。私は、このHTTPリクエストを行うことになっていますFirebaseドキュメントに基づいてNSURLSession HTTP Postを使用してFirebase Swift Pushを送信します。

func sendPushNotification(toUser: String, message: String) { 
     let urlString = "https://fcm.googleapis.com/fcm/send" 
     let topic = "\topic\\(toUser)" 
     let url = NSURL(string: urlString)! 
     let paramString = "to=\(topic)" 

     let request = NSMutableURLRequest(URL: url) 
     request.HTTPMethod = "POST" 
     request.HTTPBody = paramString.dataUsingEncoding(NSUTF8StringEncoding)! 
     request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type") 

     let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { (data, response, error) in 
      do { 
       if let jsonData = data { 
        if let jsonDataDict = try NSJSONSerialization.JSONObjectWithData(jsonData, options: NSJSONReadingOptions.AllowFragments) as? [String: AnyObject] { 
         NSLog("Received data:\n\(jsonDataDict))") 
        } 
       } 
      } catch let err as NSError { 
       print(err.debugDescription) 
      } 
     } 

     task.resume() 
    } 

Send to a single topic: 

https://fcm.googleapis.com/fcm/send 
Content-Type:application/json 
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA 

{ 
    "to": "/topics/foo-bar", 
    "data": { 
    "message": "This is a Firebase Cloud Messaging Topic Message!", 
    } 
} 

私は彼らの例のオフに基づいて、送信するメッセージのためのparamStringに渡すものを見るために苦労しています。また、認可を定義する場所は次のとおりです。key =

答えて

0

Firebase Cloud Messagingでメッセージを送信するには、ヘッダーにサーバーキーを指定する必要があります。名前が示すように、このキーは、アプリケーションサーバー(または管理する他のインフラストラクチャ)で実行されるコードでのみ使用する必要があります。ユーザーに配布するアプリケーションにサーバーキーを置くことは、悪意のあるユーザーがあなたの代わりにメッセージを送信するために使用できることを意味します。 Firebase documentation on sending messages to topics(強調鉱山)から

:Firebaseクラウドメッセージングのトピックにメッセージを送信サーバ側から

は、個々のデバイスまたはユーザーグループにメッセージを送信すると非常によく似ています。 アプリケーションサーバーは、/topics/yourTopicのような値でtoキーを設定します。

関連する問題