2016-03-22 8 views
0

ParseからHerokuに移行しました。この時点では、Parseにクラウドコードやプッシュ通知が設定されていませんでした。移行を完了したら、新しいテキストメッセージを保存するたびにプッシュ通知を処理するためにクラウドコードを実装し始めますが、Parse.Cloud.afterSaveメソッドは実行されていません。私はParse.Cloud.after Herokuサーバーからプッシュ通知が送信されないようにしました。

Parse.Cloud.define('hello', function(req, res) { 
res.success('Hi'); 
}); 

を実装する場合、私はXcodeで私のコンソールに「こんにちは」のリターンを得るが、何らかの理由でParse.Cloud.afterSaveは何もしませんので、私はmain.jsが働いている知っています。私はまた、Parse.Cloud.afterSaveコードが正しいことを知っています。なぜなら、私が別のアプリケーションで解析するのと同じコードだからです。私は何が欠けていますか?ここに私のindex.jsで

はここ

var express = require('express'); 
var ParseServer = require('parse-server').ParseServer; 
var path = require('path'); 

var databaseUri = process.env.DATABASE_URI || process.env.MONGOLAB_URI; 

if (!databaseUri) { 
console.log('DATABASE_URI not specified, falling back to localhost.'); 
} 

var api = new ParseServer({ 
databaseURI: databaseUri || '', 

cloud: process.env.CLOUD_CODE_MAIN || __dirname + '/cloud/main.js', 
appId: process.env.APP_ID || '', 
masterKey: process.env.MASTER_KEY || '', 
fileKey: 'XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX', // file key from parse 
serverURL: process.env.SERVER_URL || '', 

push: { 
ios: { 
pfx: '/Users/alexcruz/Desktop/Certificates.p12', // The filename of private key and certificate in PFX or PKCS12 format from disk 
bundleId: 'com.daps.DapsPush', // The bundle identifier associate with your app 
production: false // Specifies which environment to connect to: Production (if true) or Sandbox 
} 
} 
}); 

var app = express(); 

// Serve static assets from the /public folder 
app.use('/public', express.static(path.join(__dirname, '/public'))); 

// Serve the Parse API on the /parse URL prefix 
var mountPath = process.env.PARSE_MOUNT || '/parse'; 
app.use(mountPath, api); 

// Parse Server plays nicely with the rest of your web routes 
app.get('/', function(req, res) { 
res.status(200).send('Make sure to star the parse-server repo on GitHub!'); 
}); 

// There will be a test page available on the /test path of your server url 
// Remove this before launching your app 
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 + '.'); 
}); 

// This will enable the Live Query real-time server 
ParseServer.createLiveQueryServer(httpServer); 

ファイル私のmain.jsが

//Push Notification for messages that are received 
Parse.Cloud.afterSave("MXTMessage", function(request) { 
    var messageText = request.object.get('message'); 
    var usersReceived = request.object.get('receiver'); 
    var currentUser = Parse.User.current(); 
    var pushQuery = new Parse.Query(Parse.Installation); 
     pushQuery.equalTo('user', usersReceived); 
     pushQuery.notEqualTo('user', currentUser); 
     Parse.Push.send({ 
      where: pushQuery, // Set our Installation query 
      data: { 
       alert: "New message: " + messageText 
      } 
      }, { 
     success: function() { 
     // Push was successful 
      }, 
     error: function(error) { 
     throw "Got an error " + error.code + " : " + error.message; 
      } 
      }); 
}); 

は私がコメントすることは許されないのです、私は行くよ、あなたに

答えて

0

に感謝のファイルですこれを答えに入れる必要がありますが、それをコメントとして扱います:

関数自体を確認しましたか?実際には呼び出されません。関数の先頭にconsole.logを追加するか、プッシュ自体が機能していない可能性があります(REST APIコール経由でプッシュを送信することで確認できます)。例えば、pushはparse-server 2.2.0で壊れているようですが、動作させるには1.6.0にダウングレードしなければなりませんでした。

プッシュを送信するためのクラウドコード関数を作成し、メッセージがサーバーに保存された後にクライアントがこの関数を明示的に呼び出すようにすることができます。

また、コードでParse.User.current()を使用しているので、https://github.com/ParsePlatform/parse-server/issues/301をチェックする必要があります。

また、この時点では、構文解析サーバーが実際には安定していないという印象を受けました。私はparse-serverとHerokuを使って多くのバグを経験していますが、parse.com上で実行されているアプリケーションにはありません。

関連する問題