#ParseServer #OneSignal #ScheduledPush #ParseServerOneSignalPushAdapter

时间:2016-08-10 12:16:07

标签: push-notification parse-server onesignal

问题说明

我们正在使用OneSignal作为第三方推送服务,并使用parse-server-onesignal-push-adapter对其进行配置,因为我们正在从云代码发送推送。正常推送正在工作,但预定推送不工作。无论我们设置什么" push_time" push.send()上的参数,推送立即发送。

预期结果

工作计划推送

实际结果

即使在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 个答案:

答案 0 :(得分:0)

原因是因为解析服务器(尚未)支持推送消息的调度。目前只有parse.com支持它。

您可以在here

中阅读相关内容

如果您真的需要此功能,我建议您尝试安排一个可以为您完成的云代码作业。由于开箱即用不支持调度作业,因此您可以在here

中找到临时解决方案