gpt4 book ai didi

android - 自动后台通知firebase数据库

转载 作者:可可西里 更新时间:2023-10-31 23:13:40 25 4
gpt4 key购买 nike


我为我的学校开发了一个应用程序,其中一个功能是校长的更新。为此,我使用了 Firebase 实时数据库。我需要应用程序在添加新 child (消息)时自动发送通知(背景)。

这是我阅读的代码(swift):

var messages = [Message]()

override func viewDidLoad() {
super.viewDidLoad()

observeMessages()
}

func observeMessages() {
let dbRef = FIRDatabase.database().reference().child("messageS")
dbRef.observe(.childAdded, with: { (snapshot) in

if let dictionary = snapshot.value as? [String: AnyObject] {
let text = Message()
text.setValuesForKeys(dictionary)
self.messages.insert(text, at: 0)


DispatchQueue.main.async(execute: {
self.tableView.reloadData()
})
}

}, withCancel: nil)
}


override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}

// MARK: - Table view data source

override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}

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


override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: .subtitle, reuseIdentifier: "cellId")

let message = messages[indexPath.row]
cell.textLabel?.text = message.title
cell.textLabel?.textAlignment = .center
cell.detailTextLabel?.text = message.message
cell.detailTextLabel?.textAlignment = .right

// Configure the cell...

return cell
}

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {


let message = messages[indexPath.row]
let title = message.title
let msg = message.message
let controller = UIAlertController(title: title, message: msg, preferredStyle: .alert)
let cancelAction = UIAlertAction(title: "סגור", style: .cancel) { (handler) in
// Any action when you cancel
}
controller.addAction(cancelAction)
self.present(controller, animated: true, completion: nil)

}

这是我写的代码(swift):

@IBOutlet weak var MessageTitle: UITextField!
@IBOutlet weak var MessageText: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}

func post() {
let title: String = MessageTitle.text!
let message: String = MessageText.text!

let post: [String: AnyObject] = ["title": title as AnyObject,
"message": message as AnyObject]
let dbRef = FIRDatabase.database().reference()
dbRef.child("messageS").childByAutoId().setValue(post)



}
@IBAction func Publish(_ sender: AnyObject) {
post()



let MessageSent = UIAlertController(title: "נשלח", message: "ההודעה נשלחה בהצלחה", preferredStyle: UIAlertControllerStyle.alert)
MessageSent.addAction(UIAlertAction(title: "תודה", style: UIAlertActionStyle.default, handler: nil))
self.present(MessageSent, animated: true, completion: nil)

}

这是我阅读的代码(android):

private Firebase mRef;
public ArrayList<String> messages = new ArrayList<>();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_updates);

mRef = new Firebase("https://ksharet-d6a24.firebaseio.com");
mRef.child("messageS");
// Get ListView object from xml
final ListView listView = (ListView) findViewById(R.id.ListView);

// Create a new Adapter
final ArrayAdapter<String> adapter = new ArrayAdapter<>(this,
android.R.layout.simple_list_item_1, messages);

// Assign adapter to ListView
listView.setAdapter(adapter);


mRef.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
Message message = postSnapshot.getValue(Message.class);
messages.add(0, message.getTitle() + '\n' + message.getMessage());
}
adapter.notifyDataSetChanged();

}

@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}

@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}

@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}

@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
}

这是我写的代码(android):

private Button sendData;
private Firebase mRef;
private EditText messageBox = (EditText) findViewById(R.id.MessageText);

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_publish);

Firebase.setAndroidContext(this);

mRef = new Firebase("https://ksharet-d6a24.firebaseio.com/");
mRef.child("message");
sendData = (Button) findViewById(R.id.sendMessage);

sendData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

String message = messageBox.getText().toString();
//Firebase mRefChild = mRef.child("message");
//mRefChild.setValue(message);
mRef.push().setValue(message);


}
});
}

我应该在代码中创建或更改什么(如果可以的话,适用于 iOS 和 Android)。
我最近购买了 Apple Developer Program 成员(member)资格,它可能很快就会被激活。

感谢帮助者。

最佳答案

因此,经过大量时间寻找解决方案后,我找到了一种非常简单的方法,那就是使用云工具包。那是 brian advent 的教程:

https://youtu.be/BXl5o5_2aEU
我建议你去看他的第一个视频:https://youtu.be/XQ3nLV2778U只做其中的几件事。

编辑:2017

现在我们可以使用 Firebase 云函数在数据库更改时发送推送通知。

关于android - 自动后台通知firebase数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41198650/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com