#ParseServer #OneSignal #ScheduledPush #ParseServerOneSignalPushAdapter
Posted
技术标签:
【中文标题】#ParseServer #OneSignal #ScheduledPush #ParseServerOneSignalPushAdapter【英文标题】: 【发布时间】:2016-08-10 12:16:06 【问题描述】:问题描述
我们使用 OneSignal 作为 3rd 方推送服务,并在我们从云代码发送推送时使用 parse-server-onesignal-push-adapter 对其进行配置。正常推送有效,但预定推送无效。无论我们在 Push.send() 中为“push_time”参数设置什么,推送都会立即发送。
预期结果
工作计划推送
实际结果
即使在 Parse.Push.send() 上设置了 push_time 参数,也会立即发送推送。
我们如何发送推送
Parse.Push.send(
where: query,
data:
"alert": "Voting complete. Click here to see the results.",
"sound": "cheering.caf",
//"badge": "Increment",
"content-available": 1,
"category": "VOTING_COMPLETE",
"qc": request.object.id
,
push_time: pushTime
,
success: function()
console.log('##### PUSH OK');
,
error: function(error)
console.log('##### PUSH ERROR');
,
useMasterKey: true
);
环境设置
var express = require('express');
var ParseServer = require('parse-server').ParseServer;
var path = require('path');
var databaseUri = process.env.DATABASE_URI || process.env.MONGODB_URI;
if (!databaseUri)
console.log('DATABASE_URI not specified, falling back to localhost.');
var OneSignalPushAdapter = require('parse-server-onesignal-push-adapter');
var oneSignalPushAdapter = new OneSignalPushAdapter(
oneSignalAppId:"***************************",
oneSignalApiKey:"***************************"
);
var api = new ParseServer(
databaseURI: databaseUri || 'mongodb://localhost:27017/dev',
cloud: process.env.CLOUD_CODE_MAIN || __dirname + '/cloud/main.js',
appId: process.env.APP_ID || 'myAppId',
masterKey: process.env.MASTER_KEY || '',
fileKey: process.env.FILE_KEY || '******************************',
serverURL: process.env.SERVER_URL || 'http://localhost:1337/parse',
verifyUserEmails: true,
emailVerifyTokenValidityDuration: 2 * 60 * 60,
preventLoginWithUnverifiedEmail: true,
publicServerURL: 'http://***************************/parse',
enableAnonymousUsers: false,
revokeSessionOnPasswordReset: true,
appName: '************************',
emailAdapter:
module: 'parse-server-simple-mailgun-adapter',
options:
fromAddress: 'no-reply@***************************.com',
domain: 'mg.******************************.com',
apiKey: 'key-******************************',
,
oauth:
twitter:
consumer_key: "***************************",
consumer_secret: "***************************"
,
push:
adapter: oneSignalPushAdapter
);
var app = express();
app.use('/public', express.static(path.join(__dirname, '/public')));
var mountPath = process.env.PARSE_MOUNT || '/parse';
app.use(mountPath, api);
app.get('/', function(req, res)
res.status(200).send('Make sure to star the parse-server repo on GitHub!');
);
app.get('/test', function(req, res)
res.sendFile(path.join(__dirname, '/public/test.html'));
);
var port = process.env.PORT || 1337;
var httpServer = require('http').createServer(app);
httpServer.listen(port, function()
console.log('parse-server-example running on port ' + port + '.');
);
ParseServer.createLiveQueryServer(httpServer);
【问题讨论】:
【参考方案1】:原因是解析服务器(尚)不支持推送消息的调度。目前只有 parse.com 支持它。
你可以在here阅读它
如果你真的需要这个功能,我建议你尝试在云代码中安排一个工作来为你做这件事。由于开箱即用也不支持调度作业,您可以在here 中找到临时解决方案
【讨论】:
我们不使用 Parse 服务器基本推送服务及其推送适配器...相反,我们使用 OneSignal 和 parse-server-onesignal-push-adapter。 OneSignal 支持预定推送。 所以我想单信号推送适配器有问题..您打开问题了吗? github.com/parse-server-modules/… 是的,但没有人回复以上是关于#ParseServer #OneSignal #ScheduledPush #ParseServerOneSignalPushAdapter的主要内容,如果未能解决你的问题,请参考以下文章
无法解决:原生 Android 上的 com.onesignal:onesignal:3.12.3
php [onesignal] onesignal php api