2016-09-16 56 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