2017-05-06 9 views
2

iOSプッシュ通知を実装しようとしています。私のPHPのバージョンは動作を停止し、私は再び動作させることができませんでした。しかし、Appleの新しい認証キーを使用して完全に動作するnode.jsスクリプトがあります。私が使用してPHPからそれを呼び出すことができる午前:PHP exec()からNode.jsスクリプトを呼び出すときに、どのようにパラメータを渡すことができますか?

chdir("../apns"); 
exec("node app.js &", $output); 

しかし、私はそれにdeviceTokenとメッセージを渡すことができるようにしたいと思います。スクリプトにパラメータを渡す方法はありますか?あなたが他のスクリプトにそれを渡すよう

var apn = require('apn'); 

var apnProvider = new apn.Provider({ 
    token: { 
     key: 'apns.p8', // Path to the key p8 file 
     keyId: '<my key id>', // The Key ID of the p8 file (available at https://developer.apple.com/account/ios/certificate/key) 
     teamId: '<my team id>', // The Team ID of your Apple Developer Account (available at https://developer.apple.com/account/#/membership/) 
    }, 
    production: false // Set to true if sending a notification to a production iOS app 
}); 

var deviceToken = '<my device token>'; 
var notification = new apn.Notification(); 
notification.topic = '<my app>'; 
notification.expiry = Math.floor(Date.now()/1000) + 3600; 
notification.badge = 3; 
notification.sound = 'ping.aiff'; 
notification.alert = 'This is a test notification \u270C'; 
notification.payload = {id: 123}; 

apnProvider.send(notification, deviceToken).then(function(result) { 
    console.log(result); 
    process.exit(0) 
}); 

答えて

3

あなたはパラメータを渡すことができます。

は、ここで私は(app.js)を実行しようとしているスクリプトです。

node index.js param1 param2 paramN 

あなたはprocess.argvプロパティprocess.argv

て引数にアクセスすることができNode.jsのプロセスが開始された際に渡されたコマンドライン 引数を含む配列を返します。最初の 要素はprocess.execPathになります。 argv [0]の元の値 へのアクセスが必要な場合は、process.argv0を参照してください。 2番目の要素は、実行中のJavaScriptファイルへのパスの になります。残りの要素 は、追加のコマンドライン引数になります。

exec("node app.js --token=my-token --mesage=\"my message\" &", $output); 

app.js

console.log(process.argv); 

/* 
Output: 

[ '/usr/local/bin/node', 
    '/your/path/app.js', 
    '--token=my-token', 
    '--mesage=my message' ] 
*/ 

あなたはあなたのための引数を解析するためにminimistを使用することができます。

const argv = require('minimist')(process.argv.slice(2)); 
console.log(argv); 

/* 
Output 

{ 
    _: [], 
    token: 'my-token', 
    mesage: 'my message' 
} 
*/ 

console.log(argv.token) //my-token 
console.log(argv.message) //my-message 
+0

それは素晴らしい作品!ありがとう! – Lastmboy

+0

@Lastmboyようこそ –

関連する問題