gpt4 book ai didi

ios - 如何使用 swift3 从 ios 设备触发 firebase 的推送通知

转载 作者:可可西里 更新时间:2023-11-01 06:13:08 25 4
gpt4 key购买 nike

我是新的 iOS 开发者。

我正在使用 firebase,我正在尝试制作一个聊天应用程序,我需要在用户收到任何消息时通知他/她。为此,我尝试了 firebase 推送通知,但无法在其他用户发送消息时触发它们。我发现的唯一方法是使用 firebase 控制台发送推送通知,但它不能满足我的要求。我刚刚配置了本地通知。请指导我如何在不使用 firebase 控制台的情况下触发推送通知。

最佳答案

苦苦挣扎了将近1个月,终于找到了解决办法。

这些是基本步骤

  1. 首先确保您拥有一个活跃的苹果开发者账户

  2. 只需启用 firebase 推送通知 here ie the link of youtube video for this step

  3. 现在您的应用已针对 firebase 远程通知进行设置,但我们只能从 firebase 控制台触发它们,所以这是棘手的部分。 here is the link of video to enable firebase console on your mac
  4. 第一次看到这个会很高兴video也是因为在此视频中,他们将学习在 node.js 中编写代码并将其部署到 firebase。
  5. 现在,如果有人想制作 API 而不是制作触发器,那么这里是 API 代码,它通过从 firebase 获取他的 FCM token 向其他用户发送通知...您可以根据需要进行修改

我发现很难以准确的形式发布代码,但代码从这里开始

const functions = require('firebase-functions');

const admin =require('firebase-admin');
admin.initializeApp(functions.config().firebase);

const ref=admin.database().ref();
exports.sendNotification=functions.https.onRequest((req,res) =>{

const id = req.query.id
const title = req.query.title
const message = req.query.message
const key = req.query.key
// admin.database.ref()

const payload ={

notification: {
title: title,
body: message,
//badge: '1',
sound: 'default',
}
};

console.log('Param [key] is '+key);

const keys = [] ;

ref.child('keys').once('value')
.then(snap => {
snap.forEach(childSnap => {

const loopKey=childSnap.val().key;
keys.push(loopKey);

})

return keys;
})
.then(keys=>{

//console.log('Keys in database : '+keys.join());

if(keys.indexOf(key)>-1)
{
if(!key || !id || !message)
{
res.status(400).send('Bad request');
}
else{
ref.child('users').child(id).child('fcmToken').once('value')
.then(snapshot => {
if (snapshot.val()){
const token = snapshot.val()
console.log(token);
return admin.messaging().sendToDevice(token,payload).then(response =>{
res.status(200).send('Notification sent')
});
}
});
}
}
else
{
console.log("In-valid key : "+key);

res.status(400).send('Bad request');
}
})
.catch(error => {
res.send(error)
});

});

到此结束

这是将你的fcm存储到数据库的函数

func postToken(token: String, id: String){
print("FCM Token \(token)")
let ref = Database.database().reference().child("users").child(id)
ref.child("fcmToken").setValue(token)
}

这是我用来触发这个 API 的函数

func sendNotification(id: String, title: String, message: String){
var url = "your URL"
var urlComponents = NSURLComponents(string: url)
urlComponents?.queryItems = [
URLQueryItem(name: "key", value: self.apiKey),
URLQueryItem(name: "id", value: id),
URLQueryItem(name: "title", value: title),
URLQueryItem(name: "message", value: message)
]

Alamofire.request((urlComponents?.url)!).responseJSON { (response) in
print(response.response)
print(response.response)
print(response.result)
}

}

上面的API是根据我的数据库结构写的。您可以根据自己的结构轻松更改它。

完成所有这些后,您就可以在点击 URL 后发送通知

希望它能给大家一个好主意,让您根据自己的需要使用自己的通知。

关于ios - 如何使用 swift3 从 ios 设备触发 firebase 的推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46404315/

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