Monaca/Cordovaでプラットフォームの判定する
MonacaやCordovaでは、マルチプラットフォームを唄っているのですが、実際にアプリを開発していくと、
プラットフォームごとに別々の処理を行いたいことがあります。
例えば、iOSでは画像ファイルをDocumentsに保存したいが、Androidでは、/sdcard/の下に保存したいなど。
devicereadyイベント発火後であれば、次のコードでプラットフォームごとに異なる処理を実行出来ます。
if (cordova) { if (cordova.platformId == 'android') { // Androidの処理 } else if (cordova.platformId == 'ios') { // iOSの処理 } else if (cordova.windowsId == 'windows') { // Windowsの処理 } } else { // Cordova以外での処理 // 例:MonacaのプレビューやChromeAppなど }
なお、それぞれの定義は、各プラットフォームごとにのcordova.jsでなされています。
Android
https://github.com/apache/cordova-android/blob/master/bin/templates/project/assets/www/cordova.js
define("cordova/platform", function(require, exports, module) { // The last resume event that was received that had the result of a plugin call. var lastResumeEvent = null; module.exports = { id: 'android', ...
iOS
define("cordova/platform", function(require, exports, module) { module.exports = { id: 'ios', ....
Windows
https://github.com/apache/cordova-windows/blob/master/template/www/cordova.js
define("cordova/platform", function(require, exports, module) { module.exports = { id: 'windows', ...