我正在使用 Ionic 3 构建一个应用程序,并使用 Firebase 作为 Android 构建的推送提供者。下图显示了现在正在运行的架构(不是 GCM,而是 Firebase)
顺便说一句,我想知道是否有可能(以及如何)自己构建推送提供程序,我在哪里可以找到一些信息,我搜索了所有谷歌但我没有找到任何类型的响应。推送通知仅适用于我公司以外的推送提供商(Firebase、OneSignal 等)?
编辑:我的目的是不使用任何类型的第三方服务,如 firebase 或 APNS 或 OneSignal 等,我想自己构建它
抱歉,移动不是我的 IT 背景。 :)
最佳答案
您可以通过 Firebase
使用您自己的服务器发送推送通知。
请按照以下步骤操作。
- 转到 Firebase 控制台并创建一个项目。
- 转到项目设置中的云消息。
- 您将在项目凭据中看到
服务器 key
、旧版服务器 key
、发件人 ID
。 - 您唯一需要的是
服务器 key
。复制服务器 key
。 - 您需要向“https://fcm.googleapis.com/fcm/send”发送
post
请求'.
发布请求的 header
需要设置两个header。
- 内容类型:'application/json'
- 授权:'key=服务器 key '
将 Server key
替换为您在项目设置中从 firebase 云消息传递中复制的内容。
有效负载
您必须根据 ionic push 插件更改您的有效载荷。(cordova-plugin-fcm,cordova-plugin-firebase)。
{
"to" : 'Push Device Token',
"notification" : {
"title": 'Title for Push Message',
"body" : 'Push Message'
}
}
{
"to" : 'Push Device Token',
"content_available": boolean,
"priority": "high",
"data": {
"show_in_foreground": boolean,
"body": 'Push Message'
}
}
代码示例
如果您正在使用 NodeJS
,您可以使用 request npm 模块
发送 post 请求。
var request = require('request');
var PUSH_API_URL = 'https://fcm.googleapis.com/fcm/send';
var AUTHORIZATION = 'key=XXXXXXXXX'; //Replace XXXXXXXXX with your Server key
var payload = {
"to" : 'Push Device Token',
"notification" : {
"title": 'Title for Push Message',
"body" : 'Push Message'
}
};
request.post(
PUSH_API_URL,
{
json: payload,
headers:{
'Authorization' : AUTHORIZATION,
'Content-Type' : 'application/json'
}} , function(error, response, body){
if (error) {
// TODO: handle the error
}
else if(response.statusCode === 200){
// TODO: handle the success response
}
else{
}
});
希望对您有所帮助。如果您需要在下面澄清任何评论。从 Firebase Documentation 阅读更多内容.
关于android - 推送通知仅适用于国外第三方推送提供商服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50744914/