2016-09-16 54 views
0

我設置了我的應用程序,以便用戶在登錄時使用其用戶UID訂閱主題。無論何時用戶向其他用戶發送消息,我都會調用下面我希望觸發推送的功能。使用NSURLSession HTTP發送Firebase Swift Push Post

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() 
    } 

基於火力地堡文檔我應該做的HTTP請求:

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發送消息需要您在Authorization標頭中提供服務器密鑰。顧名思義,該密鑰只​​能用於在應用服務器上運行的代碼(或您控制的其他基礎設施)。將服務器密鑰放入發送給用戶的應用程序中,意味着惡意用戶可以使用它來代表您發送消息。

Firebase documentation on sending messages to topics(重點煤礦):

服務器側,將消息發送到火力地堡雲消息主題非常類似於將消息發送到一個單獨的設備或用戶組。 應用程序服務器將值設置爲鍵爲/topics/yourTopic