カテゴリーアーカイブ Android

村上 著者:村上

【Cordova】アプリアイコンにバッヂを追加するプラグイン「cordova-plugin-badge」

今回はCordovaのプラグインのご紹介。
お客様からのご要望で、LINEやFacebookのように、アプリのアイコン右上に赤丸や数字で通知数を表示させたいとのことでした。

現在試しているプラグインは「cordova-plugin-badge」というものです。
GitHubのページは下記から。

GitHub – katzer/cordova-plugin-badge: Access and modify badge numbers
https://github.com/katzer/cordova-plugin-badge

 

プラグインの導入方法ですが、まず下記のコマンドでプラグインを追加します。

cordova plugin add cordova-plugin-badge

なお、もしエラーが発生した場合は、下記のコマンドをお試しください。

cordova plugin add https://github.com/katzer/cordova-plugin-badge.git

上記のコマンドで、プラグインの追加まではできたので、今度はソースに下記のようにコードを追加します。

document.addEventListener('deviceready', function () {
    cordova.plugins.notification.badge.set(10);
}, false);

なお、セットしている数値が、バッヂに表示される値になります。

…が、何故か、私の環境では Android、iOS共にバッヂが表示されず…!
現在原因を調査中です。
…アプリを開いた時にリセットされているとかかな?

 

ということで、アプリアイコンにバッヂを表示するためのプラグイン「cordova-plugin-badge」でした。
まだ動いてはいませんが、導入自体はすごく簡単だったので、正常に動作すればかなりおすすめできるプラグインだと思います。
とりあえず、バッヂが表示されるように調整頑張ります…!

  • この記事いいね! (0)
asaba 著者:asaba

Handlerクラスtips

今日は処理を遅延させるコードを紹介します。

 

アプリのデザインに合わせて決められたタイミングで

処理をしたいなって思う時があると思います。

そんな時はhandlerクラスのpostDelayedメソッドを呼びましょう。

 

 

上の画像のようにHandlerインスタンスを生成した後に

run関数のスコープ内に遅延させたい処理を書きます。

これだけ。

{}外の700は、0.7秒後にrun内の処理をしますよという意味になります。

複雑な計算の処理は時間がかかりがちなので

このHandlerクラスを使って処理をさせましょう。

非同期通信の際にも応用されている非常にメジャーな技法なので

これからandroidアプリを開発をする!という人はぜひとも抑えておきたいですね。

 

  • この記事いいね! (0)
村上 著者:村上

【Android】「Configuration ‘compile’ is obsolete and has been replaced with ‘implementation’ and ‘api’.」エラーの対処法

今回は久しぶりに Android Studioで遭遇したエラーの対処法のご紹介。
Android Studio を 3 にアップデートしたところ、こちらのエラーが発生しました。

Configuration ‘compile’ is obsolete and has been replaced with ‘implementation’ and ‘api’.

Googleで翻訳したところ、「‘compile’は廃止され、’implementation’と ‘api’に置き換えられました。」とのこと。
つまり、build.gradlecompile を使用しない様にとのことでした。

なお、参考にしたサイトはこちらから。

gradle3でcompile警告 – 組み込みエンジニアのアプリ日誌
http://shekeenlab.hatenablog.com/entry/2018/04/28/223442

 

さて、こちらのエラーへの対処法ですが、build.gradle で使用されている compile を implementation に置き換えるだけ。

dependencies {
    implementation fileTree(dir: 'libs', include: '*.jar')
    implementation project(":CordovaLib")
     ︙
}

なお、修正前はこちら

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project(":CordovaLib")
     ︙
}

あとは、普通にビルドとランしてください。

 

以上、Android Studio のでエラーの対処法でした。
が、まだ compile の記述が残っているようでこの警告が未だ消えていません…。
警告なので、アプリは問題なく起動・動作するのですが、やはり少し気になります。
できれば、警告になっているファイルまで教えてくれるとありがたいですね。

  • この記事いいね! (0)
takahashi 著者:takahashi

“妖怪ウォッチ”の世界が現実化!? 位置情報ARゲーム”妖怪ウォッチ ワールド”

きっとこれは妖怪のせい…(オイ
どうも、最近夏バテ気味なたかはしです。

最近、”妖怪ウォッチ”のスマホ版ゲームが出たことを知ったのですが、内容がなかなかすごかったので取り上げてみたいと思います。

その名も、”妖怪ウォッチ ワールド”

Googleアカウント(Playゲーム)でユーザー登録して早速ログイン。


唐突に妖怪ウォッチの正当な所有者に選ばれちゃいましたw


ログインすると地図が表示されます。
実際には現在地が表示されるようですが、今回はチュートリアルなので、東京某所のエリアが表示されています。

右下に妖怪ウォッチアイコンがあり、クリックすると

サーチモードに移行。

はてなアイコンなら見えましたよウィスパーさん。


了解!
タップしてみますね。


するとカメラが起動。
…何やら空間内を紫色の靄が動き回っています。

この靄を、画面中央の円内に一定時間とらえ続けないといけないようなのですが、この靄が結構すばしっこくて、思わずあたふたしてしまいましたw

なんとかとらえ続けると、この靄が招待を表し…

</a

なんとオフィス内にジバニャンが!!!
なんだかやる気満々の様子。
どうやらここでバトルが始まるようです。


この後、チュートリアルの動画が再生されるのですが、
説明してくださる方はなんと超有名な有名なあの方…!!!

一体だれが出演するのかは、是非アプリで確かめてみてくださいw

しかしバトルとは言っても、自分まだ手持ちの妖怪(?)いないっすよ…?

と思っていたら…

なんと初期の時点で仲間の妖怪が!
流石ウィスパーさん、かなり親切ですw

バトルは基本的に自動進行します。
が、仲間側の妖怪たちが状態異常になったり、体力が減ってきた場合に、控えの妖怪と入れ替えたりなどを行ってバトルを有利に進めることができます。
また、妖怪たちが持つ必殺技の発動なども、プレイヤーが行わせることができるようです。

ちなみに、妖怪に勝つと、場合によって仲間になってくれる場合もあるようです。
自分がまるで妖怪ウォッチの世界に入ってしまったかのような気分で楽しむことができますw

ちなみに、ゲームをプレイしていてふと、Pokemon Goに非常によく似ているなーと感じ、まさかNiantic社と妖怪ウォッチの版元であるLevel-5社がコラボしたのか…!?
と思ったら、なんと

パズドラ などで有名なGungHo社とLevel-5社のコラボで製作されていました…!
ただし、地図データはGoogleMapを使っているようで、地図データは完全にNiantic社系アプリと同じ情報源となっています。

今までこのタイプのゲームはほぼNiantic社しか出していないような印象で、今回初の競合他社が現れたか!?といった感じでした。

Niantic社のIngressやPokemon Goがヒットした理由として、そのゲーム性の面白さもありますが、現実世界で遊ぶことによって、ほかのプレイヤーの方々とのつながりやコミュニティ、そしてイベントの開催などによってよりコミュニケーションをとることができる”場”を提供してきたことが大きな要因となっています。

GungHo社とLevel-5社の今回の試みでも、ゲーム世界の内側外側両方で魅力を付加することができるのか。
是非注目したいですね。

妖怪ウォッチ ワールド公式サイト

  • この記事いいね! (0)
村上 著者:村上

【Android】アプリの画面を縦方向で固定する方法

久しぶりのAndroidネタです。
今回は、端末が横向きになった場合でも、アプリの画面を縦方向に固定する方法について。

 

今回は、こちらのサイトを参考にさせていただきました。

Android縦画面固定 – Qiita
https://qiita.com/yasumodev/items/44f7fd84a58b709a0349

実装方法ですが、2つ方法があり、私が実装したのが、AndroidManifest.xml で指定する方法です。
縦方向で固定したいページのアクティビティに対して、下記を指定します。

android:screenOrientation="portrait"

具体的には、下記のようになります。

<activity
    android:name=".Main.MainActivity"
    android:screenOrientation="portrait"
    android:label="@string/app_name"/>

3行目に、縦方向で固定する指定を追加しています。

なお、横固定にしたい場合は、値を「portrait」から「landscape」に変更します。

 

次に、Activity で指定する方法ですが、こちらは onCreate の中に下記を記入します。

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

こちらの方法で横方向で固定したい場合は、引数に ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE を指定します。

 

以上、アプリの画面の向きを固定する方法でした。
iOS だと、チェックボックスの ON/OFF だけで済むので、Android は少しだけ面倒ですね。
また、アクティビティごとでの指定なので、常に縦固定の場合は、すべてのアクティビティに縦固定の指定をしなければ習いので、指定抜けにご注意ください。

  • この記事いいね! (0)
takahashi 著者:takahashi

MBaaSのFirebase、脆弱性により情報流出が発覚

Googleが提供しているサービスであるFirebaseから、なんと合計1億件以上の情報流出(Gigazine)が確認されたようです。

合計1億件以上の個人情報がFirebaseの脆弱性によって公開状態に – Gigazine

Firebaseはモバイルアプリのバックエンドに必要な機能(ログイン管理やプッシュ通知など)を一括して提供してくれるmBaaS(mobile Backend as a Service)です。

Firebaseの始め方 – Qiita

Firebaseを使うことで、本来自前でサーバーを用意してアプリのバックエンドを構築しなければいけないところを、Firebaseで対応している機能であればすべてこのサービス上で賄える、というサービスのようです。(恥ずかしながら知りませんでした。)

Gigazineの記事によると、Firebaseとの連携処理がちゃんと行われていないアプリが原因だったとのことです。

この脆弱性はFirebaseデータベースの認証が適切に行われていないときに顕在化するもの。2017年第2四半期に見つかった、アプリ開発者によるデータ格納の保護が不完全なときに情報が露出してしまう「HospitalGown」と呼ばれる脆弱性の変種であると考えられています。

Appthorityのディレクターであるセス・ハーディ氏は「このFirebaseの脆弱性は膨大な量の機密情報を公開してしまうような重大かつ危機的なものです。多くの『脆弱なアプリ』があり、多種多様なデータが公開されてしまっているという事実は、企業がアプリの開発者に頼れず、アプリストアによるチェックや単純な『マルウェアスキャン』でも対策できないということを示します。GDPRやHIPAA、PCIといったデータ保護の規則を守るために、今後はこの種の脆弱性を見つけられるよう、深いアプリ分析に投資する必要があるでしょう」と述べています。

Firebaseのサービスを利用していなければ影響を受けなかったインシデントなので、個人的には”パブリッククラウドの危ない面”が露呈してしまったのかな、という印象です。

対策がされているとはいえ、複数のユーザーで共有している環境である以上、使用する際はこういった危険性も考えて置く必要がありそうですね。

  • この記事いいね! (0)
takahashi 著者:takahashi

Google Chromeがv67からPWAに対応。Twitterなどの対応サイトで利用可能に。

最近、Windows10 AprilUpdateでMicrosoft EdgeベースのPWAに対応したニュースがありましたが、Google Chromeも、Chrome67からPWAに対応したようです。

Google Chrome 67安定版リリース、「サイト分離」機能やセンサー用API「Generic Sensor API」を搭載 – Gigazine

Twitter LiteなどのPWA対応サイトをChromeブラウザ経由でも、アプリとしてインストールしておくことが可能となりました。

ただ、現在はまだデフォルトで無効になっているようですので、
chrome://flags
から有効にする必要があります。
chrome://flagsにアクセスしたら、検索バーに”PWA”と入れます。

Desktop PWAs をDefautからEnableに変更します。

再起動を求められるので、Chromeを再起動を行えば、PWAが有効になります。

Twitterの公式アプリが自分の環境で動かない、アプリがない、という方は是非試してみてはいががでしょうか。

  • この記事いいね! (0)
takahashi 著者:takahashi

Googleアシスタントがついにタブレットにも対応!

先日ふと自分のタブレットの画面を見たら、Googleアシスタントが利用可能になったという通知が届いていました。
驚いて調べたところ、最初はスマホのみに対応していたGoogleアシスタントの対応範囲がタブレットまでに広がったという情報がでていました。

「Googleアシスタント」、Androidタブレットでも提供へ – CNET Japan

記事によると、タブレット対応に加え、今までAndroid 6.0以上が必要条件だったのが今回Android 5.0にも対応したとのこと。
これはかなり朗報ではないでしょうか。

GogleアシスタントはGoogle検索アプリの音声操作よりも多くのことを声で操作できます。
詳しくは以前書いた記事をご覧ください。

Siriの強力なライバル!? Googleアシスタントがかなりスゴイ!

Android5.0まで対応範囲が広がったとのことなので、機種変などで現役を引退したAndroid 5.0以上の端末をGoogle HomeみたいにGoogleアシスタント専用端末にしてしまうという使い方もありかもしれませんね。

  • この記事いいね! (0)
takahashi 著者:takahashi

My Data Managerで今月使えるデータ量を常に表示

以前入れていたデータ使用量をカウント・表示してくれるアプリ MyDataManager を久々にインストールしてみました。

Androidの場合、システムに標準でデータカウントをしてくれる機能がついていますが、カウントと指定容量以上を超えたら制限、および通信制限をしてくれるというシンプルなものです。

ライトユーザーであればこれで十分なのですが、自分のようにテザリングで使っていてすぐに通信量を(通知バーなどで)確認したかったり、シェアプランなどで一つのデータ容量を複数端末で共有している場合はOS標準のものでは対応できません。

一方、MyDataManagerであれば、通知バーにも出せますし、複数端末で使用状況を共有することもできるようになっています。

以前はMyDataManagerがCPUリソースを多く消費していたことがあったのでしばらく使用するのをやめていたのですが、やっぱり必要性を感じて先日再インストールしました。

最後に使ってからかなり改良や機能追加が行われており、さらに使いやすくなった印象です。
プランの設定オプションに、以前からあったシェアプラン対応の他に、特定アプリのデータ量カウント対象外プランなども追加。

比較的新しく登場したプラン携帯にもばっちり対応していて、実用感が増しています。

勿論Android標準アプリが備えているような使用量警告通知やデータ通信の自動停止などの機能も揃えてますし、日毎の使用量も同時に出してくれたりとかなり至れり尽くせりです。

スマホでモバイルルーターのように常に使用データ量を確認したり、シビアなデータ通信管理をしたい方には是非オススメしたいアプリです。

Android版
https://play.google.com/store/apps/details?id=com.mobidia.android.mdm&hl=ja

iPhone版
https://itunes.apple.com/jp/app/my-data-manager-%E9%80%9A%E4%BF%A1%E9%87%8F%E7%AF%80%E7%B4%84/id477865384?mt=8

  • この記事いいね! (0)
村上 著者:村上

【Cordova】端末にインストールされたアプリのバージョンを確認する方法

以前、JavaScriptでストアに公開されたアプリのバージョンを取得する方法について投稿しましたが、今回はアプリ自体のバージョンを確認する方法です。
これらを組み合わせれば、端末にインストールされているアプリのバージョンが、最新なのかどうかをチェックすることができます。

使うプラグインはこちら。

GitHub – whiteoctober/cordova-plugin-app-version: Cordova plugin to return the version number of the current app
https://github.com/whiteoctober/cordova-plugin-app-version

Cordova AppVersion plugin というプラグインです。

で、以前のストアに公開済みのアプリのバージョンを取得する方法がこちら。

【JavaScript】App Storeに公開済みのアプリのバージョンを取得する方法
https://cpoint-lab.co.jp/article/201804/【javascript】app-storeに公開済みのアプリのバージョンを取得/

 

さて、プラグインの使い方ですが、まず下記のコマンドを、コマンドプロンプトやiTermなどのターミナルアプリで実行し、プラグインをインストールします。

cordova plugin add cordova-plugin-app-version

インストール後は、下記のコードを、アプリのバージョンを取得したいタイミングで実行します。

cordova.getAppVersion.getVersionNumber(function (version) {
    // アプリのバージョンチェック処理を記述
}, function(error){
    // エラー時の処理
});

なお、私は下記のようにプログラムしました。

$.ajax({
    url: 'https://itunes.apple.com/lookup?id=[iOSのアプリID]',
    method: 'GET',
    dataType: 'jsonp',
    success: function(data, textStatus, xhr) {
        var storeVer = data.results[0].version;
        cordova.getAppVersion.getVersionNumber(function(appVer) {
            if(appVer != storeVer){
                // アプリのバージョンが最新でなかった時の処理
            } else {
                // アプリが最新バージョンだった時の処理
            }
        }, function(error){
            // アプリのバージョンが取得できなかった時の処理
        });
    }, error: function(xhr, textStatus, error){
        // ストアのアプリバージョンが取得できなかった時の処理
    }
});

で、バージョンが一致しない=アプリが最新ではないと判断し、アップデートを促すようにしています。

 

以上、アプリのバージョンを確認する方法でした。
Google Playのアプリのバージョンが取得できないのがネックですが、そこは Android と iOSのバージョンを合わせて、かつほぼ同じタイミングでアプリを更新するようにしたので、何とかなりました。
ということで、Cordovaアプリを開発中の方は、是非参考にしていただければ幸いです。

  • この記事いいね! (0)