加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 04:27:28 所属栏目:百科 来源:网络整理
导读:我是新的iOS开发人员. 我正在使用firebase,我正在尝试创建一个聊天应用程序,我需要在收到任何消息时通知用户. 为此,我尝试了firebase推送通知,但是当其他用户发送消息时无法触发它们. 我找到的唯一方法是使用firebase控制台发送推送通知,但它不符合我的要求.
我是新的iOS开发人员.

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

解决方法

终于在挣扎了近1个月后找到了解决方案.

这些是基本步骤

>尽快确保您拥有一个活跃的Apple开发者帐户
>只需启用firebase推送通知
here ie the link of youtube video for this step
>现在您的应用程序已设置为firebase远程通知,但我们只能从firebase控制台触发它们,所以这里是棘手的部分. here is the link of video to enable firebase console on your mac
>这也是第一次看到video会很好,因为在这个视频中他们将学会在node.js中编写代码并将其部署到firebase.
>现在,如果有人想制作API而不是制作触发器,那么这里是一个API代码,它通过从firebase获取他的FCM令牌将通知发送给其他用户…
您可以根据需要进行修改

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

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后发送通知

希望它会给你一个好主意,让你根据自己的需要使用自己的通知.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读