我開發了一個應用程序到我的學校,其中一個功能是校長的更新。爲此,我使用Firebase實時數據庫。我需要該應用程序將添加新的孩子(消息)時自動發送通知(背景)。
這是我讀的代碼(SWIFT):自動後臺通知firebase數據庫
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)
}
這是我讀的代碼(機器人):
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):
我應該在代碼中創建或更改什麼(如果可以,則適用於iOS和Android)。
我最近購買了Apple Developer Program會員資格,它很快就會被激活。
感謝幫手。
您遇到的實際問題是什麼? – shallowThought
@shallowThought當新消息到達數據庫時,我想在後臺自動推送通知。 –
也許有幫助:http://stackoverflow.com/questions/25078953/does-firebase-handle-push-notifications – shallowThought