#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

在 android 上未收到 OneSignal 通知,但从 OneSignal 控制台发送

Onesignal vs GCM(FCM)

Ionic 3 与 OneSignal 不兼容吗?

ParseServer 应用程序的压力测试