如何在firebase的实时数据库中发送新消息的推送通知
我使用firebase实时数据库制作了一个聊天应用程序,同时我也收到了这些消息。但我也想整合推送通知。当他们收到消息时,它应该向用户发送推送通知。有可能吗?如何在firebase的实时数据库中发送新消息的推送通知
回答:
如果其他用户在数据库推送令牌首先你需要访问与查询,然后使用AFNetworking您可以发送推送通知给其他用户,如下图所示:
let manager = AFHTTPRequestOperationManager() manager.requestSerializer.setValue("key=yourServerKey", forHTTPHeaderField: "Authorization")
manager.requestSerializer.setValue("application/json", forHTTPHeaderField: "Content-Type")
let sendPushForChatUrl = "https://fcm.googleapis.com/fcm/send"
let to = otherUserPushToken as! String
let notification = notificationData as! [String: AnyObject]
let param = ["to":to, "content_available":true, "priority":"high", "notification":notification] as [String : Any]
manager.post(sendPushForChatUrl,
parameters: prepareObjects(param),
success: { (operation: AFHTTPRequestOperation?,responseObject: Any?) in
print("Suceess")
print(responseObject ?? "")
} ,
failure: { (operation: AFHTTPRequestOperation?,error: Error?) in
print("Error: " + error!.localizedDescription)
print("Fail")
})
,并要求例子是:
{ "to":"userPushToken",
"priority":"high",
"content_available": true,
"notification":{
"notification-type":"chat",
"target":"Current User",
"title":"Current User has sent you a message",
"text": "hello1",
"badge": 5 //Badge you want to show on app icon
}
}
如果您想调试它,它也可以在postman上运行。
编辑:下面
在你的情况是你的工作代码:
@IBAction func sendPushTapped(_ sender: Any) { let manager = AFHTTPSessionManager()
manager.requestSerializer = AFJSONRequestSerializer()
manager.responseSerializer = AFJSONResponseSerializer()
manager.requestSerializer.setValue("key=AIzaSyBpJPPYSkRKH6cpDV_bpe2NQiytvPTlTcw", forHTTPHeaderField: "Authorization")
manager.requestSerializer.setValue("application/json", forHTTPHeaderField: "Content-Type")
let fcmToken = "fkXo5yZvrKc:APA91bGxj2tJKWungvA4zyOUFBp5leUghd0wczDbZSkzImjZqRfSIgEFtKCQWZL0xEPZ3xfasfJdoX_JosX87VK7ioyap1fJJcTQ9rJzlC5ahwDktTnLGVqRg-wNZZw4TVvaCemEQFs2"
let sendPushForChatUrl = "https://fcm.googleapis.com/fcm/send"
let message = ["notification-type":"chat", "target":"Current User", "title": "Hello", "text": "msg!", "sound": "default", "badge": 5] as [String : Any]
let param = ["to":fcmToken, "priority":"high", "content_available": true, "notification":message] as [String : Any]
print("Push Url :", sendPushForChatUrl)
print("Push Parameters :", prepareObjects(param))
manager.post(sendPushForChatUrl, parameters: prepareObjects(param), progress: { (NSProgress) in
print("Progress ::", NSProgress)
}, success: { (task:URLSessionDataTask, responseObject) -> Void in
print("Push response", responseObject ?? "")
}, failure: { (task:URLSessionDataTask?, error:Error) -> Void in
print("Failure: ",error.localizedDescription)
})
}
func prepareObjects(_ dict : Dictionary<String, Any>) -> NSMutableDictionary
{
let dictParameters = NSMutableDictionary()
for (key, value) in dict
{
dictParameters.setValue(value as? AnyObject, forKey: key)
}
return dictParameters
}
以上是 如何在firebase的实时数据库中发送新消息的推送通知 的全部内容, 来源链接: utcz.com/qa/261653.html