-1

テーブルビューが更新されたときにユーザーに通知したい。私はfirebaseを使用していますが、テーブルビューが更新されたときにローカル通知が必要です。テーブルビューが更新されたときのトリガーを設定する方法がわかりません。私は読むことができるすべてのドキュメントを読みましたが、それを理解できません。私のコードは、参照用に以下にリンクされています。通知をセットアップします。テーブルビューが更新されたときに通知を追加する方法がわかりません。

import UIKit
import FirebaseAuth
import FirebaseDatabase
import UserNotifications

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

    @IBOutlet weak var tableView: UITableView!

    var ref: DatabaseReference!
    var databaseHandle:DatabaseHandle?



    var postData = [String]()

    override func viewWillLayoutSubviews() {
        self.navigationController?.isNavigationBarHidden = false
    }



    override func viewDidLoad() {
        super.viewDidLoad()
        UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound], completionHandler: {didAllow, error in
        })


        ref = Database.database().reference()

        tableView.delegate = self
        tableView.dataSource = self
        // Do any additional setup after loading the view, typically from a nib.
        databaseHandle = ref.child("Posts").observe(.childAdded) { (snapshot) in

            let post = snapshot.value as? String

            if let actualPost = post {

            self.postData.append(actualPost)

            self.tableView.reloadData()

            }
        }
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return postData.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "postCell")
        cell?.textLabel?.text = postData[indexPath.row]
        return cell!
    }

    func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
        if (editingStyle == UITableViewCellEditingStyle.delete) {
            // handle delete (by removing the data from your array and updating the tableview)
            Database.database().reference().removeValue()
        }
    }



    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        tableView.cellForRow(at: indexPath as IndexPath)?.accessoryType = .checkmark

    }

    func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
        tableView.cellForRow(at: indexPath as IndexPath)?.accessoryType = .none
    }
4

2 に答える 2