カテゴリーアーカイブ iOS

村上 著者:村上

【Xcode】アプリを実機にインストールできない「The executable was signed with invalid entitlements.」エラーの対処法

久し振りに、iOS アプリの開発を行ったところ、実機へのインストール時に、「The executable was signed with invalid entitlements.」というエラーが発生。
今回は、その対処法についてです。
以前にも、実機でアプリを起動できないことがありましたが、その時とは違うエラーでした。
原因は署名のあたりにありそう。

で、いくつかヒットした記事の中で、実際に解決策とのなったのがこちらの記事でした。

ionic framework – The executable was signed with invalid entitlements – 0xe8008016 – Stack Overflow
https://stackoverflow.com/questions/52846785/the-executable-was-signed-with-invalid-entitlements-0xe8008016

 

解決策ですが、まず Xcode のメニューバーの「File」から、「Workspace Settings…」を洗濯します。

すると次のようなウィンドウが表示されるので、「Build System」の項目を「Legacy Build System」に変更します。

操作はこれだけ!
あとは、一度 Clean してから、Build 及び Run を実行しましょう。
私の環境では、この方法で解決できました。

 

調べた時に、他にも、TARGETS の Build Settings の Code Signing Identify の Debug の値を「iOS Developer」に変更する、や、同じく TARGETS の Build Settings の Code Signing Entitlements に定義されているパスが正しいかを確認する、などの方法もありました。
が、私に環境ではこちらについては問題なしだったため、Build System を変更する方法をとりました。
個人的には、まず上の2点をお調べすることをお勧めします。

以上、iOSアプリが実機にインストールできない時の対処法でした。
この方法で解決できれば幸いです。

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

【ios】メールとアーカイブとの違いtips

gmailでアドレスを登録してメールの処理をしている時にどう違うのか疑問に思ったのでメモがてら載せます。

 

アーカイブ:メールを削除しないでトレイから見れなくするだけの機能。見えないけどメール自体は保存されるので

検索をかければ見ることができます。

 

削除:メールをゴミ箱に移動させます。ゴミ箱に移動させたメールは、時間が経つと自動で削除されます。

 

 

アーカイブで非表示にしてもやはり容量は食うので、基本的には削除を使って不要なメールを消していきます。

gmailを使っているとこのアーカイブという機能を見かけますが、残っているのが気持ち悪くて嫌いなので自分は完全に削除

しています。

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

【iPad】再起動を繰り返す「リンゴループ」になってしまった時の対処法

会社のiPadがまさにこの現象にハマってしまったので、再発した時のためにまとめ。
強制再起動もダメだったので、強制初期化を実行しました。

なお、今回参考にさせていただいた記事はこちらから。

iPhone・iPadが再起動を繰り返す「リンゴループ」になってしまった時の対処法まとめ|ハロー!パソコン教室イオンタウン新船橋校(船橋市北本町1丁目のパソコン教室) http://shinfunabashi.jugem.jp/?eid=1007

なお、強制初期化を行う前に、まずは強制再起動などを実行することをおすすめします。
やり方は、「ホームボタン+電源ボタンを長押し」するだけ。
場合によってはこれで直ることもあるらしいので、まずはこちらからお試しください。
で、だめだった場合、次は「SIMを抜いてから再起動」を行い、それでもだめなら「強制初期化」を実行しましょう。

 

さて、強制初期化のやり方ですが、まずはiPadの電源を落とします。
電源の落とし方は、再起動の時と同様に「ホームボタン+電源ボタンの長押し」ですが、再起動してリンゴマークが現れても、引き続き押し続けてください。
で、画面が消えたら、完全に電源が落ちた状態になります。
そうしたら、Macを用意し、「ホームボタンを押しながらPCと接続します。 すると、iPadの画面にiTunesのアイコンと、ケーブルのアイコンが表示されると思いますので、それが表示されたら、ここからはMacの操作を行っていきます。
iTunesを起動すると、リカバリモードが表示されるので、「更新」または「iPadを復元」を選択します。
私の場合は、まずiPadのソフトウェア更新から行い、それが完了したら、復元を実行しました。

実行中の画面はこんな感じ。 一度iPadとの接続が切れたのか、途中で失敗しましたが、再度やり直したところ、無事に初期化が成功しました!
言語設定とかアカウント設定を行い、とりあえず見慣れたホーム画面が表示されたので、今のところは問題なしと思われます!

 

初期化なので、当然データ等はきれいさっぱり消えてしまいましたが、とにかくリンゴループはしなくなったので、ひとまず安心です。
ただ、後輩君曰く、初期不良では…?とのことだったので、今後も再発するようであれば、修理に出すことも検討したほうが良さそうです。

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

【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)