Firebase 推送通知

Firebase 推送通知android ios实现

https://firebase.google.com/docs/查看android ios前端对接流程,比较简单

  • 本文主要讲解后台实现
    1、firebase后台创建项目,获取相关参数和配置如下

    (1)、点击Project Overview -> 项目设置

    (2)、云消息传递中获取服务器密钥(建议,当然旧版服务器密钥也可以使用)
    这里写图片描述
    (3)、服务账号 -> 点击生成新的私钥,获取私钥配置(json文件,丢失后可以重新生成,重新生成后需要替换旧的配置)
    这里写图片描述
    (4)、数据库url
    这里写图片描述
    2、服务端nodejs
    (1)、node安装firebase-tools工具

> #命令行: npm install -g firebase-tools --save (全局安装)
> #命令行: firebase login

可能提示错误: Authentication Error: Your credentials are no longer valid.(原因VPN)

解决办法:在firebase-tools文件夹下(全局安装路径(shift+cmd+g):/usr/local/lib/node_modules/firebase-tools/)
找到文件 node_modules/firebase/node_modules/faye-websocket/lib/faye/websocket/client.js 
修改如下
var Client = function(_url, protocols, options) {
    options = options || {};
    // 添加proxy配置
    options.proxy = {
        origin:  'http://localhost:1087',
    };
    …
}

> #重新命令行
export http_proxy=http://localhost:1087
export NODE_TLS_REJECT_UNAUTHORIZED=0
firebase login --no-localhost
> #命令行: 
export http_proxy=http://localhost:1087
export NODE_TLS_REJECT_UNAUTHORIZED=0
firebase login --no-localhost
前面两行不能少不然又会报错
> #命令行:
firebase deploy
回车就行

(2)、js脚本

> #命令行:
node install firebase

书写脚本server.js(demo自行修改定义)
-------------------------

var firebase = require('firebase');
var request = require('request');

var API_KEY = '服务器密钥';(上述得到)

var token = '前段app打印';

firebase.initializeApp({
    serviceAccount: "私钥配置路径./xxxxx.json",
    databaseURL: "数据库url--https://xxxxx.firebaseio.com/"
});

var payload = {
    to: "/topics/前段主题key 或者 上面定义的token",
    notification: {
        body: "this is test body",
        title: "this this this"
    }
}

setTimeout(function (args) {
    sendNotificationToUser(payload);
}, 200);

function sendNotificationToUser(message, onSuccess) {
    request({
        url: 'https://fcm.googleapis.com/fcm/send',
        method: 'POST',
        headers: {
            'Content-Type' :'application/json',
            'Authorization': 'key='+API_KEY
        },
        body: JSON.stringify(message)
    }, function(error, response, body) {
        if (error) {
            console.log('---message send error--', error);
        }
        else if (response.statusCode >= 400) {
            console.log('HTTP Error: '+response.statusCode+' - '+response.statusMessage);
        }
        else {
            console.log('--message send success---')
            onSuccess && onSuccess();
        }
    });
}

猜你喜欢

转载自blog.csdn.net/cd020781/article/details/80083305