投稿

macOS MojaveでGoogle Play Musicの制御にメディアキーが使えない場合の対処

イメージ
macOS MojaveでGoogle Play Musicの制御にメディアキーが使えない場合は、
システム環境設定>セキュリティとプライバシー>プライバシー>アクセシビリティ

でChromeにコンピュータの制御の許可を与えてやると動くようになるよ。

iPhoneXかどうかをJavaScriptで判断するには?

イメージ
まずUserAgentで判別できないかと考えた。しかし、

mozilla/5.0 (iphone; cpu iphone os 11_1 like mac os x) applewebkit/604.3.5 (khtml, like gecko) mobile/15b93
という感じなので無理。

cordova-plugin-deviceでもダメ。


で、世間ではどのような議論が行われているかというと、

ios - Detect if the device is iPhone X - Stack Overflow

画面の幅高さで判別しろとか、ネイティブ側で

struct utsname systemInfo; uname(&systemInfo);
的なことをしろとか、safe-area-inset-*があるかどうかで判別しろとか、そういった議論が行われている。

今回はJavaScriptで判別する必要があるので、ネイティブ側から情報を取得する方法は使えない。

画面の幅高さで判別する方法は、現状では問題無いだろうが、端末ごとに幅高さが変更される可能性があることを考えると、あまり上手い方法とは言えない。

safe-area-inset-*があるかどうかで判別するのは有効そうだ。safe-area-inset-*を持つということは「ノッチ」がある端末ということなので、iPhoneXに限らずEssential Phoneなども検出できるだろう。

問題はJSからどのようにsafe-area-inset-*を取得するかだ。

WEBページをiPhoneXに対応させる方法として、CSSで「constant(safe-area-insets-*)」を使うということはわかっているが、これをJSで取得するにはどうするのか?

window.screenやdocument.documentElement.styleのプロパティーをくまなく見てみたが、safe-area-inset-*を取れそうなプロパティーは存在しなかった。

そこで、safe-area-inset-*のpaddingを持つダミーエレメントをテンポラリにDOMツリーに追加し、値を取得した後すぐに削除するというdirtyな実装をした。

/** * セーフエリアがあるディスプレイかどうかを返す */ function i…

CordovaアプリでAppStoreのストア情報の「言語」に「日本語」を追加するには?

CordovaアプリをAppStoreに提出すると、何もしなければストア情報の「言語」が英語になる。

気づいてはいた。実際のアプリは日本語のみ対応なので、せめて「日本語、英語」と表示されるようにすべきだ。しかし、そんなところを気にするユーザーはいないだろうと思って解決を先送りにしていたら、ユーザーから指摘を受けた。

やっぱりちゃんと解決しないとダメだと思い直したが、どうすればいいのか?色々と調べたけど、ぴったりな情報は無かったのでログしておこうと思う。

XcodeでFile>New>File...

ダイアログが出るので iOS>Resource>Strings File>Next

ファイル保存ダイアログが出るので「Localizable.strings」という名前でResources配下に保存する。

ファイルインスペクター(Xcodeのプロジェクトナビゲーターでファイルを選択すると右に出るやつ)でResources/Localizable.stringsを選択

「Localize...」ボタンをクリック

プロジェクトナビゲーターでプロジェクトをクリック

Infoタブクリック

Localizationsセクションで「+」アイコンをクリックし、Japanese(ja)を選択

ローカライズするファイルを選ぶダイアログが出るので、Localizable.stringsを選択し、Finish

すると、

Resources/en.lproj/Localizable.strings
Resources/ja.lproj/Localizable.strings

ができる。

これでAppStore上で「日本語、英語」と表示されることを確認した。

本当は「日本語」のみの方が好ましいが、次のアップデートで試してみるつもり。

AppleのAppStoreにCordovaアプリを提出してリジェクトされたら…これをチェック!

イメージ
AppleのAppStoreにCordovaアプリを審査に提出したらリジェクトを食らった。曰く。

During review, your app failed to launch on iPad running iOS 9.2.1 and iPhone running iOS 9.2.1 on both Wi-Fi and cellular networks. Specifically, when we selected the application on the Home screen, the app displayed a launch image then quit unexpectedly. This may be because iOS 9 uses a watchdog timer for applications; if an application takes too long to complete its initial startup, the operating system terminates the application.
要するに「起動しない」と。iOS9は「watchdog timer」という、起動に時間がかかり過ぎるアプリを自動的に終了させる機能があるので、そのせいかもしれないとのこと。

結論から言うと、

Runpath Search Paths>Releaseにパスが設定されているか確認せよ!

ということである。watchdogは関係無かった。単に必要なライブラリがリンクされていないせいでクラッシュしていただけだった^^;

もちろん審査に提出するにあたりアプリが正常に起動することは確認している。デバッグモードではね。しかし、リリースビルドで起動確認することをすっ飛ばしていた。慢心があった。まずこれが敗因の一つ。

リリースビルドは、Xcode>Window>Organizer>Exportで抽出できる。抽出方法がいくつかあるが、今回のようなテスト目的なら「Sava for Development Deployment」で抽出する。


抽出したリリースビルドは、Xcode>Window>Devicesで各実機にインストールできる。


もうひとつの敗因は、CordovaがiOSプロジェクトを作成する方法…

iOSアプリ申請・公開手順まとめ 〜2016年3月版〜

イメージ
iOSアプリの申請・公開手順については、すでに様々な人々がブログ等でまとめてくれているが、代表的な記事でもすでに少々古くなっていることを否めない。

そこで、2016年3月版として改めて書いておくことにはそれなりの意味があると思うのでログを残しておこうと思う。

記事を書くにあたり、こちらのサイトを大いに参考にさせて頂いた。
よく分かる!iOS アプリのリリース手順のまとめ | Developers.IO


前提として、アプリの開発が済んでいることとする。


1. Production用のCertificateファイルの作成

iOS Certificates - Apple Developer

にアクセス。作業は全てSafariで行った方が良い。

「+」ボタンをクリック。


「App Store and Ad Hoc」を選択してスクロールして「Continue」をクリック。


キーチェーンアクセスで申請用のファイルを作る方法が書いてあるページが表示される。「Continue」をクリック。


Macで、アプリケーション>ユーティリティー>キーチェーンアクセス.appを起動。「認証局に証明書を要求…」を選択。


「ユーザーのメールアドレス」を入力。
「通称」には「iOSアプリのリリース用」的なことを書いておいた方が良い。
「CAのメールアドレス」は空欄で。
「要求の処理は」は「ディスクに保存」を選択。
「続ける」をクリック。


すると、「CertificateSigningRequest.certSigningRequest」というファイルを保存するダイアログが出るので適当な場所に保存。

Safariに戻り、「Choose File…」をクリックして、「Generate」をクリックして保存したファイルをアップロードする。


「Donwload」ボタンをクリックして、「ios_distribution.cer」をダウンロードする。「Done」ボタンをクリックして終了。



2. Distribution用のProvisioning Profileを作成

「Provisioning Profiles」>「Distribution」のタブに移動し「+」ボタンをクリックする。


「Distribution」の「App Store」を選択し、「Continue」ボタンをクリック。


「App ID」でリリースした…