AppSeedのアプリ開発ブログ

アプリ開発会社AppSeed(アップシード)開発担当のブログです。iOS、Android、Unity、Cocos2d-xなどアプリ開発関連のTipsや備忘録、アプリ開発に役立つ情報を発信します。

iOS

iOSアプリの審査でAppleからリジェクト時にクラッシュログが送られてきた場合の不具合調査方法

最近、僕の開発したアプリがAppleからリジェクトをくらったのですが、リジェクトと一緒にAppleからクラッシュログが送られてきました。今回は、Appleからクラッシュログが送られてきた場合に不具合の原因を調査する方法に関するメモをまとめておきたいと思い…

iOSとAndroidで非同期処理する方法

iOSとAndroidで非同期処理する方法に関するメモ。重い処理や画像の読み込みを行う場合、メインスレッドで行うと固まって見えたり、メモリリークが発生する可能性があるので、そうゆう処理は非同期で処理した方がよさげ。

【iOS】アプリのバックグラウンドで音楽再生中にAVAudioPlayerを再生させると音楽が止まる現象の対処法

iOS

僕が開発したiOSアプリにユーザーから「AppleのMusicアプリをバックグラウンド音楽再生中にアプリを使用したらAppleMusicの音楽が止まってしまう」という問い合わせがありました。 実際に確認してみると、確かにAppleMusicアプリで音楽のバックグラウンド再…

【iOS】TestFlightで配信したアプリでアプリ内課金のテストを行う手順

iOS

アプリ内課金のあるiOSアプリを開発してTestFlightでアプリを配信してテストしたのですが、アプリ内課金テスト手順がややこしかったので、うまくできたパターンをメモしておきます。iOSアプリのアプリ内課金テストを行う場合、まず以下の準備を行います。開…

【Unity】 Social ConnectorがiPadで動作しない場合の対処法

最近作ったUnityアプリでSocialConnector(TwitterやLineなどのSNS共有用プラグイン )を使用しているのですが、 iPhone(iOS13.3)では正常に動作するものの、iPad(iPadOS13.3)では共有アクティビティ(UIActivityViewController)が開かない現象が発生しま…

【Unity】iOSのバイナリアップロードで「ITMS-90809: Deprecated API Usage」(UIWebView)のエラーが出る場合の対処法

先日、Unityで作ったアプリをiOSのAppStoreConnectにアップロードしたら、AppStoreConnectから上記の通知がきて、バイナリが無効になりました。調べた結果、UIWebView関連のエラーだったようなので、対処法をメモしておきたいと思います。 ITMS-90809: Depre…

【iOS】TestFlightのプッシュ通知はApnsの本番サーバーに向いているっぽい

最近、iOSアプリ開発で自社サーバーを使ったプッシュ通知を実装しました。 今まではFCM(Firebase Cloud Messaging)使った一斉配信ばかり使っていたのであまり気にしたことなかったのですが、今回自社サーバーを使ったプッシュ通知を実装してみて、TestFlig…

Firebase Crashlyticsはリリース後のアプリ不具合調査にかなりおすすめ!

最近、FirebaseのCrashlyticsをアプリに導入してみたら、リリース後の不具合調査でかなり使えることがわかったので、メモとして残しております。最近、受託開発しているアプリの大幅リニューアルを行いました。状況的には以下のような感じでした。社内デバッ…

【iOS】Content and frame layout guides before iOS11.0のエラーの対処法

iOS

iOSアプリのプロジェクトをいつも通りビルドしたら、下記のようなエラーが出てビルドが通らない状況があったので今後の為にメモ。ScrollViewに設定してある「Content Layout Guide」でエラーが出てるっぽいのですが、対処法がわからなかったので調べてみまし…

【iOS】App Store Connectへアプリアップロード時に「ERROR ITMS-90339」のエラーが出る場合の対処法(Unity)

最近Unityで作ったアプリをApp Store Connectにアップロードしようとした際に上記のようなエラーが発生したので今後の為にメモ。ERROR ITMS-90339:"This bundle is invalid. The Info.plist contains an invalid key 'UIApplicationExitsOnSuspend' in bundle…

【iOS】CocoaPodsのバージョンを調べる方法

iOS

仕事でiOSのバージョン管理ツール「CocoaPods」のバージョンを調べる機会があったので今後の為にメモ。CocoaPodsのバージョンを調べるにはターミナルを使えば簡単に確認できます。ターミナルを起動して、以下のコマンドを入力すれば、CocoaPodsのバージョン…

【iOS】ipaファイルの作成方法

今までは開発中のiOSアプリをチームに共有したい場合、TestFlightにアップロードして共有していましたが、最近ipaファイルを渡す方法を試してみたのでやり方をメモしておきたいと思います。 (Xcode Ver 11.2.1) Xcodeでipaファイルを作成する方法 Xcodeでi…

【iOS】ITMS-90683: Missing Purpose String in Info.plistのエラーの対処法

最近、ビルドしたアプリをApp Store Connectにアップロードしたところ、アップロードは成功したのですが、しばらくしてAppleから「ITMS-90683: Missing Purpose String in Info.plist」という内容のメールが届きました。今回はこの対処法についてメモとして…

Xcode11.2でApp Store Connectへのアップロードエラー(Invalid Toolchain)が発生した場合の対処法

iOS

昨日、Xcode (version11.2)でビルドしたアプリをApp Store ConnectへアップロードしようとしたらInvalid Toolchainのエラーが出てアップロードできませんでした。試行錯誤の結果、ようやく解決できたので、今後の為に対処法を残しておきたいと思います。いつ…

iOS13のダークモードの罠【iOSアプリ開発】

iOS

AppleがiOS13をリリースしてから1ヶ月程度経ちましたが、 iOS13リリース後、初めてアプリをアップデートした際に遭遇した問題に関するメモ。Xcode11でアプリをビルドする場合、設定を追加しておかないとダークモード時に表示がおかしくなるので注意が必要で…

【iOS】Xcode11でRealmのエラー「Terminating app due to uncaught exception 'RLMException」が発生する場合の対処法

iOS

日記アプリ「Nikky」を久しぶりにアップデートしようとしたらXcode11でRealm関連のエラーが出てビルドできなかったので対処法をメモ。先日、iOSの最新版「iOS13」が公開されたこともあり、XcodeもXcode11になりました。Xcodeを11にアップデート後、iOSプロジ…

AppStoreConnectで「無効なGeoJSON:ルーティングAppガバレッジファイルが無効です。」のエラーが出る場合の対処法

アプリのスクリーンショットをアップロードしようとしたら、以下のようなエラーが表示されました。無効なGeoJSON:ルーティングAppガバレッジファイルが無効です。詳細については、次のガイド「Location and Maps Programing Guide」を参照してください。スク…

アプリから端末の広告IDを取得する方法(iOS,Android)

仕事で端末の広告IDを取得する場面があったので今後の為にメモ。端末の広告IDについて。まず、端末の広告IDというのはどのようなものかというのは以下の記事が参考になりました。つまり「広告ID」というのは、「端末を識別する為のユニークなIDで、再生成可…

【iOS】アプリからgmailにテキストを自動送信させる方法(サーバーを使わない)

iOS

今僕が公開しているほとんどのアプリでは、「ユーザーに追加要望や不具合報告を送ってもらう」ためにメーラーを立ち上げる機能を実装してます。この機能を実装してからユーザーさんの声をアプリに反映させやすくなりました。ただ、メーラーを立ち上げてユー…

Apple Developer Programのメンバー追加は、個人アカウントでは出来ないっぽい?

Apple Developer Programのメンバー追加に関して、ハマってしまったので今後の為にメモ。 「Apple Developer Program(個人アカウント)にメンバー追加を行う」ってことをやりたかったのですが、個人アカウントの場合、メンバー追加は行えないようです。(多…

【iOS】アプリ内で動画を再生する方法(Swift)

iOS

iOSで動画再生する方法に関するメモ。以前確かやったことはありますが、久しぶりにやったら意外と時間がかかったので今後のためにメモ。今回はアプリ内に再生する動画を同梱させてそれを再生させます。 なのでまずは、再生する動画をプロジェクトに追加しま…

【iOS】UITextViewでキーボードに閉じる(完了)ボタンを追加する方法(Swift)

iOS

iOSでキーボードを表示した時に閉じるボタンが必要な場面が結構多いので今後の為にメモ。1行で入力させるTextViewであれば閉じるボタンがキーボード上に表示されますが、改行が必要な場合や2行以上あるTextViewの場合、閉じるボタンを追加した方がユーザーフ…

【iOS】UIViewに枠線と色をつける方法(Swift)

iOS

久しぶりにSwiftを触ったらUIViewに枠線をつける方法を忘れてしまっていたのでメモ。UIViewに枠線と色をつける方法(Swift)「borderColor」の色を変更することで枠線の色も変更できます。ただし、「borderColor」に指定するのはUIColorではなくCGColorであ…

【Unity】iOSのステータスバーの文字色を変更する方法

Unityで作ったアプリでステータスバーを表示する方法を以前書いたのですが、ステータスバーの文字色を変更する必要も出てきました。上記の設定によりステータスバーを表示することはできますが、iOSの場合、ステータスバーのデフォルトの文字色は黒なのでUni…

【Unity】CodelessIAPは結構罠が多いから自分でスクリプト書いた方が確実で速いと思うよ

最近Unityでアプリ内課金を実装するために「CodelessIAP」を使ってみました。簡単に実装できそうということで試してみましたが、結構罠があるので注意が必要そうです。今回はUnityのCodelessIAPでアプリ内課金を実装した感想、つまづきポイントをまとめてお…

【Unity】iOS版をシミュレーターで動作確認したい場合にやるべきこと

この前、Unityで作ったアプリで特定の端末のレイアウト崩れが起きていないか確認したい状況がありました。Unityで画面サイズを確認したい端末と同じにすれば大体は確認できるのですが、ステータスバーの表示を含めたレイアウトを確認したかったので、手元な…

iOSのSandboxテスターアカウントを追加できない場合の対処法(App Store Connect)

iOS

最近、久しぶりにiOSアプリの課金テストを行ったのですが、iOSアプリの課金テストを行うためにApp Store Connectでテスターアカウントを追加しようと思ったら、エラーが出て登録ができませんでした。調べた結果、ようやく登録できたので備忘録として残してお…

【Unity】端末のステータスバー(時刻・電池残量)を表示する方法(iOS・Android)

Unityでアプリ開発の仕事をしていて、 お客さんからステータスバー(時刻・電池残量)を表示して欲しいという要望がありました。 Unityで1年くらい開発していますが、ステータスバーの表示はしたことがなく、 そもそもUnityでステータスバーの表示できるのか…

【Unity】iPhoneX、iPhoneXSなどの縦長系の端末かを判定する方法

Unityを使ってアプリを開発するようになってから約1年くらい経ちましたが、 Unityでアプリを開発する上で地味に厄介なのが、iPhoneXなどの縦に細長い系の端末です。iOSもAndroidも最近まではある程度画面の縦横比をそこまで考慮しなくてよかったのですが、iP…

iPhoneのSafariでスーパーリロード(キャッシュクリアして強制的にロード)する方法

前にMac版のGoogle Chromeでスーパーリロードする方法を紹介したのですが、iPhoneでもサイトの動作確認を行うことが多いので、iPhoneのSafariでもスーパーリロードする方法がないか調べてみたところ、できなくはないっぽいので、今回紹介しておきます。