カテゴリーアーカイブ iOS

村上 著者:村上

【Cordova】端末内のファイルを開く「cordova-plugin-file-opener2」をiOSでも使う

先日投稿した、「cordova-plugin-file-opener2」を使って端末内のファイルを開く方法の、iOSバージョンです。
思ったよりも簡単に実装できました。

プラグインはこちらからご確認ください。

GitHub – pwlin/cordova-plugin-file-opener2: A File Opener Plugin for Cordova
https://github.com/pwlin/cordova-plugin-file-opener2

ちなみに先日の投稿についてはこちらから。

【Cordova】端末内のファイルを開くプラグイン「cordova-plugin-file-opener2」
https://cpoint-lab.co.jp/article/201812/【cordova】端末内のファイルを開くプラグイン「cordova-plugin-file-op/

 

さて、実装方法ですが、コード自体は下記のとおりです。

let filePath = [開きたいファイルのパス];
if (window.device.platform === 'Android') {
  filePath = filePath.replace(/^file:\/\//, '');
}
window.cordova.plugins.fileOpener2.open(
  filePath,
  'image/png',
  {
    error: function() {
      // エラー時の処理
    },
    success: function() {
      // 成功時の処理
    },
  }
);

異なる点は開きたいファイルを指定しているパス値のみで、それ以外は先日に投稿したコードとほぼ同じです。

Android と iOS では開くファイルのパス指定方法が異なるので、まずは端末が Android なのか iOS なのかを判断します。
上記のコードでは、3行目にあたります。
使用しているプラグインは「cordova-plugin-device」です。

GitHub – apache/cordova-plugin-device: Apache Cordova Plugin device
https://github.com/apache/cordova-plugin-device

device.platform で、Android や iOS などの、プラットフォームを示す文字列が取得できるので、それを使って判断しています。
で、Androdだったら、文頭についている file:// をとり、iOS だったらそのままです。

あとは、取得・整形したファイルパスとファイルのMIMEタイプを fileOpener2 のプラグインで指定して、ファイルを開く処理を実行します。
そうすれば、指定したファイルが展開されるはずです。

 

以上、iOSで端末に保存されたファイルを開く方法でした。
Androidは、サンプルコードから文頭の file:// が不要ということが分かったのですが、iOSの指定方法が見つけられず…。
で、試しに取得したファイルパスを加工せず、そのまま指定したところ、問題なく実行されたという次第です。
行き当たりばったりな気もしますが、動いたので問題なし!ということにします。

ということで、Android・iOSの両端末でのファイル展開機能の実装については、これで対応が完了です。

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

【備忘録】Firebase Cloud Messagingでのプッシュ通知の送信について

実は似たような記事を以前にも投稿しましたが、今回はメッセージを送付する際のHTTP構文についてです。
というのも、送信メッセージやタイトルを変えるだけならまだしも、パラメータを変更したり、追加・削除するときに毎回調べていたので、いい加減自分のためにまとめようと思ったからです。

そのため、この記事は私的重要ポイントのみをまとめてあります。
ご了承ください。

ちなみに、以前の記事はこちら。

【PHP】FireBase Cloud Messagingを利用したプッシュ通知をPHPから送る方法 – 株式会社シーポイントラボ|浜松のシステム開発会社
https://cpoint-lab.co.jp/article/201810/【php】fireBase-cloud-messagingを利用したプッシュ通知をphpから送る/

 

さて、まず Firebase の公式サイトのHTTP プロトコルについてのページがこちら。

Firebase Cloud Messaging の HTTP プロトコル|Firebase
https://firebase.google.com/docs/cloud-messaging/http-server-ref?authuser=0

このページですら毎回検索して探すので、こうしてまとめたかったというのが主ですね。

次に、各項目について。
送信先を指定するパラメータ to について、その具体的な指定値です。

指定値 対象
/topics/all 全端末に送信
/topics/android Android端末にのみ送信
/topics/ios iOS端末にのみ送信
/topics/[トピック名] 特定のトピックに登録されている端末にのみ送信
[デバイストークン] 特定の端末

こちらに関しては、特に説明不要かと思います。
送信先を指定したい場合、こちらの to の値を変更しますが、例が載っていなかったので、よく使いそうなもののみを抜粋しました。

次は dry_run というパラメータです。
こちらは未指定の場合のデフォルトは false になっています。
このパラメータを true にすると、実際にプッシュ通知を送らずに、レスポンス結果を取得することができます。
送信のテスト時に使うパラメータですね。

あとは、badge という、ホーム画面のアイコンにバッヂを追加するためのパラメータです。
こちらにバッヂの値を指定すると、プッシュ通知を受信した時にバッヂが追加されます。
なお、0 を指定すると、バッヂは削除されます。

よく使うのはこのあたりでしょうか。
他にも、Androidのみの設定で icon というパラメータでプッシュ用のアイコン画像を指定できます。
これがないと、アイコンが白い四角形になってしまい非常に味気ないので、Android アプリに通知を送る際は指定したほうが良さそうです。

 

以上、FCM でメッセージを送付する際のHTTP構文についてでした。
なお、レスポンスデータについては、上で挙げた Firebase の公式サイトのHTTP プロトコルについてのページの下の方に載っているので、こちらも参考にしてください。

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

他のデバイスのWindowsのサブディスプレイ化が簡単にできるアプリ”spacedesk”

Windows 10 から、Windowsには標準機能で”このPCへのプロジェクション”機能がついています。
この機能を使うと、Miracast対応デバイスをWindows PCのサブディスプレイとして使うことができます。
標準機能なので手間もかからず、安心して使えるのはとてもいいところなのですが、まだ粗削りな部分が多く、解像度の相性が悪かったりすると画面のサイズが合わなかったり、うまく動作しなかったりという部分がまだあります。
また、Miracast対応デバイスでないと接続できないため、mac OS/iOSやLinux等では通常利用できません。

そんなこともあって代替えになりそうなアプリをいろいろ探していたところ、こちらのアプリを見つけました。

spacedeskというアプリです。

サーバー(仮想ディスプレイを使う側)はWindowsのみ対応になっていますが、クライアント側(仮想ディスプレイになる側)はWindowsの外に、iOSとAndroidのデバイスも使うことができ、さらにHTML5版も用意されているので、macOSやLinux、ChromeOSなどでも利用することができます。

自分の手元のPCで試したところ、アプリ版よりもHTML5版の方がより高速に動作している印象でした。

大きなメニューアイコンが出てくるのが玉に瑕ですが、使っている分にはあまり気になりませんでした。

操作も簡単で使いやすいので、暫く使ってみたいと思います。

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

位置情報ゲームIngressがリニューアル!Ingress Primeがついに公開!!

先日、IngressのTwitterアカウントで公式以前から予告されていたIngressのリニューアル版、Ingress Prime がリリースされたというツイートが投稿されました。

早速インストールしてみました!

起動するとIngressの開発元であるNianticのロゴが表示され…

ログイン画面が表示されるので、旧バージョンで使用していたGoogleアカウントでログインします。

Facebookアカウントも使えるようになったようですね…!

ログイン中…

めちゃくちゃクールなサイバーな音とともに、Ingressのスプラッシュが表示されました…!

現在地測位中の画面がすでに超クールになってます…!

XMスキャナー起動中画面…ヤバイ、クールすぎる…

起動準備完了(?)したようで、”タップして起動”の文字が。

この後、チュートリアルとしてXMやポータル、Ingressのルールについての説明が出てきますが、極秘書類のようなのでこちらでは伏せておきます(w

ちなみに、既にエージェントになっているユーザーはチュートリアルは表示されないようです。
チュートリアルではADAやジャービスのフルボイスも聞けたということらしいのでちょっと残念です。

最後にレジスタンス陣営のトップでもあるADAさんが直々に挨拶(?)していきましたw

そしていよいよスキャナが起動…

うおおおおすげええええ
めっちゃ綺麗になってる!!!
UIも一新されています。

中心のボタンを押すとメニューが表示されます。
アイテムストレージの”Inventory”、ポータルへアタックするためのXMウェポンの一覧を表示する”Attack”、同陣営やエージェント全体とテキストメッセージのやり取りができる”Comm”が一番押しやすい位置に置かれています。

これらはよく使う機能なので、押しやすい位置に移動したのはかなり好感が持てますね。

早速Attackを選ぶと

こんな画面に。
アイテムのデザインも一新されていて、とにかくキラキラしてますw

実体がないXMから作られているアイテムなので、こうちょっと幻想的なデザインになっているのはちょっと惹かれますね。


旧バージョンのスキャナと同様、攻撃時に長押しするとサークルが表示され、一番中心にに来た時に離すと一番強い威力でアタックできる仕様は引き継がれていましたが、個人的には新バージョンの方がやりやすい印象でした。

ただ、アタックしたときのポータルのダメージエフェクト、例えばModが破壊されたときのエフェクトがちょっと見づらくて、いつまで武器を打ち続ければいいのかわかりづらいのがちょっと惜しかったです。

インベントリもかなり変更されていて、ポータルキーとアイテムが分けて表示されるようになりました。
アイテムが探しやすくなったのはありがたいです。

そして総じてデザインがカッコイイ…!!!

他にもいろいろと変更されていますが、何より全体的にエフェクトが豪華になっていることでより没入感が増していて、とても興奮しました!

なお、端末が対応できなかったり、旧来のIngressの方がいい、という場合は、旧バージョンのアプリも引き続き利用できるとのことです。

新アプリはそこそこ重いので、旧アプリも使えるのはありがたいですね。

まだ新バージョンを入れたばっかりで触り切れていないので、また機会があれば記事にしてみたいと思います。

Ingress Prime – GooglePlayStore

Scanner [REDACTED](未公開版)- GooglePlayStore

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

【Cordova】ローカル通知機能を実装するためのプラグイン「cordova-plugin-local-notifications」

今回は、アプリにローカル通知を送る方法について。
アプリから通知を送るには、以前にも何度か記事に取り上げた cordova-plugin-fcm など、インターネット経由で外部サービスと連携してプッシュ通知を送る方法がありますが、ローカル通知はアプリ自身が通知を送る仕組みです。

プラグインは「cordova-plugin-local-notifications」を使用しています。
GitHubはこちらから。

GitHub – katzer/cordova-plugin-local-notifications: Cordova Local-Notification Plugin
https://github.com/katzer/cordova-plugin-local-notifications

 

まずインストール方法ですが、下記のコマンドを実行します。

cordova plugin add cordova-plugin-local-notification

ローカル通知を送るには、下記のコードを実行します。

cordova.plugins.notification.local.schedule({
    title: '[タイトル]',
    text: '[メッセージ]',
    foreground: true
});

最低限、上記のタイトルやメッセージテキストなどを指定すれば、即時に通知が送付されます。
他にも指定できる項目があり、添付ファイルや、”Yes”、”No” などのボタン、更には文字の入力欄を追加することもできます。

また、trigger という項目を指定することで、送付するタイミングや、繰り返し通知することもできます。
現時点では使ってはいませんが、こちらも便利そうですね。
サンプルコードはこちら。

// 指定した時間にローカル通知を送付
cordova.plugins.notification.local.schedule({
    title: '[タイトル]',
    text: '[メッセージ]',
    trigger: { at: new Date([年], [月], [日], [時]) }
});

// 指定した回数だけ毎日通知する
cordova.plugins.notification.local.schedule({
    title: '[タイトル]',
    text: '[メッセージ]',
    trigger: { every: 'day', count: [回数] }
});

個人的には、あるエリアに行くと通知する、という下記のコードも便利そうだと思います。

cordova.plugins.notification.local.schedule({
    title: '[タイトル]',
    text: '[メッセージ]',
    trigger: {
        type: 'location',
        center: [lat, long],
        radius: [通知半径],
        notifyOnEntry: true
    }
});

ただし、こちらの位置による通知は iOS 未対応のようです。
ご利用になる際には、その点だけご注意ください。

 

以上、アプリにローカル通知を送信する方法についてでした。
予定のリマインドなど自分自身に通知を送りたいだけの時には、こちらのプラグインで十分だと思います。

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

噂されていた”極狭ベゼル”なiPadが現実に!? iPhone Xを踏襲した新型iPad ProをAppleが発表!

前回の記事先日のAppleの発表会「Apple Spetial Event」で発表されたMacについて書きましたが、今回はiPadについて書きたいと思います。

・噂されていたホームボタン無し/極狭ベゼルのiPadがついに現実に!?

先日ご紹介したMacの2新機種発表の時点でかなり驚きましたが、さらに新型iPadの発表もされたのでさらにびっくりしました。

以前リーク情報として新型のiPadのイメージ図が出ていましたが、まさかほぼそのまんまの姿で現れるとは思いませんでした。

ホームボタンが無くなり、iPhone X/Xs/XR 同様にジェスチャーでホーム画面やアプリを切り替える方式になりました。
また、高精度の顔認証機能である”Face ID”も搭載しますが、iPad Proの場合はセンサーのスペースが十分に取れたのかノッチはありません。

新しいiPad Proの凄いところは、最近のモバイルPCを追い越すほどのスペックを搭載している点です。

今回の新型iPad Proは7コアGPUと8コアCPUを搭載していて

市場にあるポータブルPCのうち92%のモバイルノートPCよりもiPad Proの方が高速だとのことです。

なので、よりリアリティのある3ゲームもヌルヌル動くし、Adobeが開発するiPad Pro向けのフルバージョンのPhotoshopも使うことができるとのことです。

そしてもうひとつ大きな変更点として、Apple製のモバイルデバイスで初めてUSB Type-cが採用された点です。

Type-Cが採用されたことで、他のType-C対応機器との接続が容易になったり、

iPhoneなどのほかのUSB機器に充電できたりといったことができるようになったとのこと。
iPadからiPhoneに電源供給されている光景はちょっと面白いですね。

ベゼルが狭くなっている点については、「どうやって持つんだろう…w」というのが正直な印象ですが、機能面ではより使い勝手が良くなっているようなので、全世代のiPadProよりもかなり気になるデバイスになっているのではないかなと感じました。

いづれのハードウェアも、前回と比較してかなり進化した印象を感じた発表でしたね。

いよいよ大手IT企業各社がデバイスの開発に本腰を入れ始めた感のある今期、今後シェアの変動やハードウェアがどのように展開されていくのか、とても楽しみですね。

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

【Cordova】「cordova-plugin-fcm」で取得したトークンが登録されていない時の対処法

以前、「cordova-plugin-fcm」プラグインの getToken() でトークン取得できない時の対処法について紹介しましたが、こちらの方法で取得できたトークンが実は使えなかったので、さらなる対処法についてです。
一応下に以前の記事を載せておきますが、こちらは非推奨ですのでご注意ください。

【Cordova】プラグイン「cordova-plugin-fcm」のgetTokenでnullが返ってくるときの対処法
https://cpoint-lab.co.jp/article/201810/【cordova】プラグイン「cordova-plugin-fcm」のgetTokenでnullが返ってくると/

 

では、今回行った対応策ですが、まず Firebase Console Messaging の設定を確認します。
で、いつから変わったのかは知らないのですが、クラウドメッセージングの設定の APNs証明書を登録する項目で、この証明書に代わり、APNs 認証キーを設定できる様になっていました。
実際の画面はこちら。

推奨しているのは、こちらのAPNs 認証キーとのことでしたので、証明書からキーに変更します。
なお、認証キーは Apple DeveloperCertificates, Identifiers & Profiles ページから作成できます。
そして、この認証キーは一度しかダウンロードできないので、万が一にも消してしまわないように注意してください。

次に、Xcodeの設定です。
Xcode の Workspace Settings から、Build System を変更します。
恐らく、New Build System になっていると思いますので、これを Legacy Build System に変更します。

変更点は上記の2点です。
あとはいつも通り Build して実行したところ、無事に getToken() でトークンが取得できました!

 

以上、getToken() で null が返ってくるときの対処法でした。
Push通知に関しては、もしAndroidで問題なく動いているのなら、iOSの原因は十中八九 証明書周りのはずなので、まずはそのあたりを調査することをおすすめします。

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

Appleが突如10/30に発表会をスケジュール!何が発表されるのか気になる…

突如としてAppleがイベントの開催を告知しました。

Apple Special Event – Apple
速報:Apple、前代未聞の招待状で10/30イベント開催を告知 NYで何が発表されるか徹底予想 – engadget日本版

今度こそベゼルレスのiPad Proや新型macbookAirが発表されるのでは、という予想もたてられているようですね。

この前のGoogleのイベントで、Pixel3を”iPhone Xsよりも優れた製品”として大々的にアピールしたので、
こちとら黙ってはいられない…!
というところもあるかもしれませんね。

こちらの発表会イベントは日本時間で10/30(火)23:00から行われるとのことなので、この前のGoogleのイベントよりは見やすい時間帯となっています。

新製品発表の瞬間をリアルタイムで見られるチャンスですので、是非チェックしてみてはいかがでしょうか。

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

【ios】緊急速報を消す方法 ※非推奨です

今日も脱線気味です、すみません。

緊急災害警報のあのうるさい音を消す方法についてお話します。

少し前に強い台風が浜松を襲ったときに、風や雨音がうるさくとても眠れる状況ではありませんでした。

それだけならまだ耐えられたのですが、極めつけは携帯の緊急災害速報(怒)

何回鳴ったか分かりませんが、筆者を寝不足に陥れた張本人です。よく台風や大雨の時にジリジリ鳴っていますが実はこいつ消せます、簡単に。

まず、設定をタップします。その後に通知という赤いアイコンをタップしてください。

その後に一番下までスライドすると、緊急速報というリストがあります。通常は緑でonになっていると思うので、トグルをタップして

オフにします。たったこれだけで鳴らなくなります。

 

いかがでしたでしょうか。大げさだなと感じる人もいれば万が一の時に備えて鳴るようにしなきゃと心構えを持つ人もいるので

強くはお勧めしません。むしろ止めといた方が今後の為ですはい。

いつでもonにそんなもん怖くねーよゆっくり寝たいんだよ(# ゚Д゚)という方は試してみてください、自己責任ですけど。

はい、短いですが今日はこれでおしまいです。まじめな方は今日の記事は見なかったことにして災害に対応できるようにしてくださいね!

それでは!

 

P.S.これだと緊急地震速報も鳴らなくなるのかな・・・?それは怖いけど。

 

 

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

【Cordova】プラグイン「cordova-plugin-fcm」のgetTokenでnullが返ってくるときの対処法

現在進行形で格闘中のアプリの修正の中で、解決したものがあったのでそれをご紹介。
タイトル通り、「cordova-plugin-fcm」で端末の一意のトークンを取得する getToken() で、なぜか取得した値が null になる時の対処法です。
他にも同じエラーに悩んでいる人はいたようだったので、ある程度簡単に情報はヒットしました。
で、今回参考にしたサイトはこちら。

getToken() returns ‘null’ only after install・Issues #104・fechanique/cordova-plugin-fcm・GitHub
https://github.com/fechanique/cordova-plugin-fcm/issues/104

 

解決策としましては、もしトークンが取得できなかった場合は、onTokenRefresh() を使って、トークンを再取得しなおす方法が良いとのこと。
実際のコードはこちら。

FCMPlugin.getToken(
    (token) => {
        if(token == null){
            FCMPlugin.onTokenRefresh(function(token){
                // onTokenRefresh() でトークンを取得時の処理
            });
        } else {
            // getToken() でトークンを取得した時の処理
        }
    },
    (err) => {
        // エラー時の処理
    }
);

こんな感じです。
もし、getToken() で取得したトークンが null だったら、onTokenRefresh() でトークンを再取得しています。
現時点では、問題なくトークンが取得できました!
取得できたトークンはデータベースに保存なりして、プッシュ通知の送付に使います。

…が、なぜか今度はプッシュ通知が送れず…。
Androidだと、上記のトークンが取得できない問題もなく、あっさりとプッシュ通知送付まで実装できたのですが、まさかiOSでつまづくとは…。
一難去ってまた一難という感じですが…引き続き頑張ります。

 

ということで、cordova-plugin-fcm プラグインでトークンが取得できない時の対処法でした。
同じことにお困りの方は、是非お試しください。

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