【Monaca】ベーシックプランでInAppBrowserのバージョンを変更する方法

前回、「【Monaca】Cordova 6.2対応で問題発生!」において、InAppBrowserプラグインがv1.4.0のため、Android 4.0.4上で動作しない件を掲載した。

ベーシックプランでは、プラグインのバージョンを変更することができない。
2016100202

しかし、ある方法でベーシックプランでもプラグインのバージョンを変更することができる。
今回は、InAppBrowserプラグインをv1.4.0からv1.5.0に変更する方法を説明する。
※この記事を掲載後にMonaca側が何らかの対策を行った場合、変更できない可能性があるのでご注意いただきたい。

①「ファイル」→「Cordovaプラグインの管理」と選択し、Cordovaバージョン:CLIバージョンを「6.2.0」を選択する。
②6.2.0に変更後、「ファイル」→「プロジェクトをエクスポート」と選択し、エクスポートを実行する。
③エクスポートしたzipファイルを解凍し、「.monaca」フォルダにある「project_info.json」をメモ帳などで開く。

④18行目の“cordova-plugin-inappbrowser@1.4.0”,“cordova-plugin-inappbrowser@1.5.0”,に変更して保存する。
⑤解凍して作成されたフォルダやファイルを圧縮する。
⑥Monacaの「Import Project」を選択し、「プロジェクトのパッケージをアップロード」で圧縮したファイルを選択し、インポートを行う。
⑦InAppBrowserプラグインがv1.5.0であることを確認する。
2016100201

Android 4.0.4の端末で動作確認済み。
おそらくこの方法で問題ないと思われる。

【Monaca】Cordova 6.2対応で問題発生!

MonacaがCordova 6.2に正式に対応し、シンプル体重管理の最新版をCordova 6.2でリリースする予定だったが、思わぬところで問題が発生した。

アプリをリリースする場合、Android 4.0.4・4.4.4・5.1.1上で必ず動作チェックを行っているが、Android 4.0.4だけGoogle Driveのバックアップ・リカバリー機能が動作しない。
処理を一つ一つ検証したところ、オーソライズを行うためにwindow.open(authUrl, “_blank”, features)を実行している箇所が動作しない。

Cordova 6.2対応でアップデートしたInAppBrowserプラグイン v1.4.0の問題と思い、「InAppBrowser Android 4.0.4」で検索したところ、やはり思ったとおりだった。

InAppBrowser doesn’t open on Android 4.0.4 (regression)

最近リリースされたv1.5.0でfixされたようだが、問題はMonaca側がこの件に対応するかどうか。
この件についてMonacaのお問い合わせから送信したが、不具合等の報告、技術的な質問はStackOverflowに誘導しているため、相手にされない可能性もある。

現状では月額5,000円のゴールドプランに入り、技術サポートチケットを使って対応してもらうか、独自でv1.5.0のブラグインを組み込むしか方法はなさそうだ。
※9/20追記
技術的な問題のため、Monaca側の回答を引用させていただく。

貴重な情報、ありがとうございます。
弊社でも検証させていただき、対応を検討させていただきます。
InAppBrowserプラグイン1.5.0をMonacaでご利用になる場合は、
InAppBrowserプラグインの設定にある「プライグインのバージョン」で「1.5.0」を選択し、
ご利用ください。

現状では月額5,000円のゴールドプランに入り、プラグインのバージョンを変更するしか方法はないようだ。
万が一、ほかのプラグインも不具合が発生した場合に対応できないとなれば、安定して動作しているCordova 5.2でリリースするしかない。

今、楽天モバイルでASUS ZenFone 2 Laser 16GBモデルが税別7,800円で購入できます。

【Monaca】nend広告を一定の間隔で更新させる

Monacaでnend広告を一定の間隔で更新させることができるか挑戦してみた。
※注意事項
1.Monacaデバッガー上での動作確認であり、リリース版での動作については未確認。
2.広告更新後のバナーをタップした場合、収益が計上されるかについては未確認。
3.広告更新ごとに通信が発生するため、更新のタイミングやアプリの使用時間によってユーザーにパケット代の負担をかけることになる。
4.index.html上で動作させる必要がある。(8/14追記)

広告タグのスクリプト(nendAdLoader.js)が実行されると、複数の広告用タグが埋め込まれる。
スクリプトを動的に実行すれば広告を更新させることができるが、埋め込まれたタグを削除しないと更新ごとにタグが追加されてしまう。

広告表示テスト用広告コードを実行する。

すると、2行目(3行目の内容は省略)、10行目、11行目のタグが埋め込まれる。

広告を更新させるには、2行目(div)、10行目(script)に埋め込まれたタグ、動的にスクリプトを実行するために8行目(script)のタグを削除する必要がある。
※11行目は、一度削除してしまうと二度と埋め込まれなくなるので削除しない。

実際の広告コードに切り替えて実行すると、1分おきに広告の更新を確認することができた。
2016081301
     ↓
2016081302
     ↓
2016081303
     ↓
2016081304
     ↓
2016081305

※8/17追記
nendCommon.init()を実行すると、広告が更新(初期化)されることがわかった。

参考サイト – Monacaでnend広告のリフレッシュ方法について

ただし、10行目(script)に埋め込まれたタグは更新ごとに追加されるので削除する必要がある。
また、nendCommon.init()は一般には未公開のため、使用には要注意。

【Monaca】Onsen UI 選択したデータを前画面に渡す

JavaScript + Onsen UI V2版はこちら。

※Onsen UI + AngularJSを使用。

ons-navigatorpushPage()popPage()を利用すれば、次画面に進み、前画面に戻ることが実現できる。
しかし、次画面で選択したデータを前画面に渡す方法は記載がない。
$rootScope.$broadcast()を利用して親コントローラ(page1Controller)にデータを渡し、$scope.$on()で受け取ればよい。

Page1で「ここをタップ」をタップし、Page2で「1000」をタップすると、Page1に戻り「1000」と表示される。
2983291e-9b3c-42cf-b5bc-8094b371f7c9 4c4aee94-6c9d-419f-8ca4-138286fd7463 7693ddf9-229c-4d9f-8b0a-642ccabe47f2
Continue reading

【Monaca】i-mobile広告を既存ブラウザで表示する

前回、nend広告を既存ブラウザで表示する方法を紹介した。

i-mobileの広告でも同じことができる?できない?
答えはできる。
スタック・オーバーフローなどでnend広告に関する質問がいくつか投稿されているが、基本的に広告がどのように表示されているか、掲載されたコードがどのように動いているか、確認されていない方が多いと思われる。

i-mobileの広告を既存ブラウザで表示するには、nendと同様のコードを利用することで実現できる。
divタグのid名をnend_adspaceからimobile_adspotdiv1に書き換えるだけで済む。
つまり、リンク先のaタグを探すために、親要素となるdivタグを指定している。

※nend、i-mobile共に320×50サイズのバナーの場合。

【Monaca】ncmb-push-monaca-plugin v2.0.0 ご利用の方は今すぐアップデートを!

2016040301

4月下旬ころに「ギャンブル収支管理」のユーザーからメールが届いた。
Playストアからダウンロードすると、「エラーコード-505」が発生するとのこと。
メールにてAndroid端末の設定や初期化などお願いしたが、解決できなない状況が続いた。
そして、Net Dreamers様の提供アプリ「netkeiba.com-無料で使える人気競馬アプリ」をインストール後に「ギャンブル収支管理」をインストールすると、「プロバイダの認証が重複しています」や「エラーコード-505」というエラーにより、インストールまたはアップデートできなくなる現象が発生することがわかった。

二つのアプリに共通する箇所について調査したところ、プッシュ通知ではないかと判断し、ncmb-push-monaca-pluginのリリースを調べてみたところ、v2.0.0の不具合による現象と判明した。

v2.0.1
変更点
Cordova 5.2環境でGoogle Play Service 8.3を利用している場合に、applicationIdが指定されていないことにより
Google Play Service 8.3を含むアプリケーションを複数インストールすることができなくなってしまうため、
プラグイン内部で使用するGoogle Play Serviceのバージョンを8.1にダウングレードしました。

現在、v2.0.2なのでv2.0.0を利用してアプリを開発した方は、早急なアップデートを行った方がよい。

【Monaca】Nifty mBaaS データストアの検索条件に日付を指定する

2016061401

Nifty mBaaSのデータストアで利用可能なデータ型は、データストア(Monaca):基本的な使い方に記載されているとおり。

データストアで利用可能なデータ型

データストアでは、以下の値が利用可能です。

種類 サンプル
文字列 ABC
配列 [“orange”, “apple”, “grape”]
数字 123
日付 2013-09-06T01:51:03.606Z
真偽値 true または false
オブジェクト {“name”:”orange”}
緯度経度(位置情報) 33.857619,122.378986

検索条件「登録日時:createDateが一致」に日付を指定する場合、equalTo(“createDate”, “2016-06-14T12:00:00.000Z”)と日付型に従ってデータを設定しても何も返ってこない。

ドキュメントを隅から隅まで読みまくる。
・・・これか!!!
下記のようにデータを設定する必要がある。わかりにくいな。
REST API リファレンス 5.1 日付を参照。

【Monaca】Onsen UIでnend広告が表示されない

最新記事はこちら。


Onsen UIを使用してnend広告を表示させようと、下記コードを設置しても表示されない。(※テスト用コード)
どうして?と悩む方も多いと思う。
2016-06-08-10-00-22

答えは簡単。
実際は広告が表示されているが、Onsen UIはCSSでz-indexを使用しているため、Onsen UIが表示した画面の裏に隠れてしまう。
広告用のコードをdivタグで囲い、z-index: 99でOnsen UIが表示した画面の上に表示させる。
既存のブラウザで表示させたい場合は、【Monaca】nend広告を既存ブラウザで表示するを参照。
2016-06-08-10-03-43

【Monaca】Onsen UI ons-list のズレをなくす

Onsen UIはすばらしいフレームワークだが、MonacaのAndroid用アプリで使用すると難点もある。
例えば、ons-list
iPhoneの設定画面のようなイメージの画面が再現できる。
2016-06-06-18-27-47

しかし、使い方によっては問題が発生する。
例えば、左はons-listを5回使用した場合、右はons-list-itemを5回使用した場合。
ご覧のとおり、同じ並びを期待するもズレが発生してしまう。
2016-06-06-18-28-03
Continue reading

【Monaca】Nifty mBaaSのプッシュ通知を実装する

Onsen UI + AngularJS
Cordovaプラグイン:ncmb-push-monaca-plugin v2.0.1(※バージョン要注意

Niftyのサンプルでは、document.addEventListener(“deviceready”, …..となっているが、ons.ready()はイベントの最後に実行されるので、その中にプッシュ通知の処理を記述しても問題ない。
プッシュ通知によって受け取ったJSONデータをons.notification.alert()を使ってダイアログ表示する。
JSONデータはダイアログ表示に必要な形式で作成し、新しいプッシュ通知画面のJSONの項目に設定して送信する。
2016052602

type: 将来に使用
title: ダイアログのタイトル
message: ダイアログのメッセージ(HTML形式)
button1: ダイアログのボタン
button2: 将来に使用
button3: 将来に使用

JSONデータ