如何向Firebase中的其他用户发送预先编写的应用内用户通知?我只想要在我的tableview中点击哪个用户单元来接收相同的预写通知。
我还在AppDelegate中启用了通知。
我知道Firebase推送通知,这不一定是我想要的,我希望其他用户从桌面视图中触发通知。
到目前为止,这是我的代码:
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)
}
答案 0 :(得分:0)
使用信号,它是免费的,可以在firebase中工作 您可以使用swift将设备发送到设备或设备或设备,以便在app中进行细分通知 它可以通过这个模型工作: 使用onesignal sdk获取用户特定的ID,在创建帐户时,将其保存在firebase中 你的数据库 -Users- - 用户身份 -OnesignalId:“由信号函数创建的id” 然后,当想要从不同的用户向上述用户发送通知时 它可以像这样使用 这是一个由onesignal SDK提供的功能 OneSignal.postNotification([“heading”:[en:“你想要什么”],“内容”:“thecontenthere”],“include_player_ids”:OnsignalID) 这会从设备向具有此信号ID的设备发送通知