Ios 向Firebase中的其他用户发送预先编写的应用程序内用户通知
我如何向Firebase中的其他用户发送预先编写的应用程序内用户通知?我只希望我在tableview中点击的任何用户单元都能收到相同的预写通知 我还在AppDelegate中启用了通知 我知道Firebase推送通知,这不一定是我想要的,我希望其他用户从tableview触发通知 以下是我目前的代码:Ios 向Firebase中的其他用户发送预先编写的应用程序内用户通知,ios,swift,uitableview,firebase,firebase-realtime-database,Ios,Swift,Uitableview,Firebase,Firebase Realtime Database,我如何向Firebase中的其他用户发送预先编写的应用程序内用户通知?我只希望我在tableview中点击的任何用户单元都能收到相同的预写通知 我还在AppDelegate中启用了通知 我知道Firebase推送通知,这不一定是我想要的,我希望其他用户从tableview触发通知 以下是我目前的代码: import UIKit import Firebase import UserNotifications class NewMessageController: UITableViewCont
import UIKit
import Firebase
import UserNotifications
class NewMessageController: UITableViewController, UNUserNotificationCenterDelegate {
let cellId = "cellId"
var users = [User]()
override func viewDidLoad() {
super.viewDidLoad()
UNUserNotificationCenter.current().delegate = self
tableView.separatorInset = UIEdgeInsetsMake(0, 3, 0, 11);
self.navigationController?.navigationBar.prefersLargeTitles = true
self.navigationController?.navigationBar.topItem?.title = "People"
self.navigationController?.navigationBar.largeTitleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
self.tableView.backgroundColor = UIColor(red:0.20, green:0.22, blue:0.29, alpha:1.0)
navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(handleCancel))
tableView.register(UserCell.self, forCellReuseIdentifier: cellId)
fetchUser()
}
func fetchUser() {
Database.database().reference().child("users").observe(.childAdded, with: { (snapshot) in
if let dictionary = snapshot.value as? [String: AnyObject] {
let user = User()
user.name = dictionary["name"] as? String
user.email = dictionary["email"] as? String
user.profileImageUrl = dictionary["profileImageUrl"]as? String
self.users.append(user)
//this will crash because of background thread, so lets use dispatch_async to fix
DispatchQueue.main.async(execute: {
self.tableView.reloadData()
})
// user.name = dictionary["name"]
}
}, withCancel: nil)
}
@objc func handleCancel() {
dismiss(animated: true, completion: nil)
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return users.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: cellId, for: indexPath) as! UserCell
cell.textLabel?.textColor = UIColor.white
let user = users[indexPath.row]
cell.textLabel?.text = user.name
cell.detailTextLabel?.text = user.email
cell.detailTextLabel?.textColor = UIColor.white
cell.textLabel?.font = UIFont.boldSystemFont(ofSize: 15.0)
if let profileImageUrl = user.profileImageUrl {
cell.profileImageView.loadImageUsingCacheWithUrlString(profileImageUrl)
}
return cell
}
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 72
}
//var messagesController: MessagesController?
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let messi = UNMutableNotificationContent()
messi.title = "HelloApp"
messi.body = "Hi There!"
messi.badge = 1
messi.categoryIdentifier = "messiCategory"
let messiTrigger = UNTimeIntervalNotificationTrigger(timeInterval: 2, repeats: false)
let messiRequestIdentifier = "messi"
let request = UNNotificationRequest(identifier: messiRequestIdentifier, content: messi, trigger: messiTrigger)
UNUserNotificationCenter.current().add(request) {(error) in
print(error as Any)
}
使用onesignal,它是免费的,可以在firebase中工作 使用swift在应用程序中发送设备到设备或设备到分段通知 它可以通过以下模型工作: 使用onesignal sdk获取特定于用户的id,在创建帐户时,将其保存在firebase中,如下所示 你的数据库 -使用者- -用户ID -OnesignalId:“由onesignal函数创建的id” 然后,当您希望从其他用户向上述用户发送通知时 它可以这样使用 这是onesignal SDK提供的函数 OneSignal.postNotification([“heading”:[en:“what you want”],“contents”:“thecontenthere”],“include_player_id”:OnsignalID) 这将从一个设备向具有此onesignalID的设备发送通知