2

アプリはアプリストアでほぼ1年間公開されており、更新後にアプリを開くことができないというお客様からの悪いレビューがいくつか寄せられています。

ユーザーから、アプリケーションを削除してから再インストールした後、アプリケーションを起動できないとの報告がありました。あるユーザーは、iPhoneを工場出荷時にリセットした後にのみアプリケーションを起動できることを示しました。

これはシステム内で永続的であるように思われるため、この問題はキーチェーンに関連していると考えました。このため、キーチェーンにアクセスするために使用しているサードパーティのライブラリをhttps://github.com/soffes/sskeychainに更新しました。この変更はバージョン1.4.1で行われました。

1.4.1をリリースした後、数人のユーザーがついにアプリを開くことができたと述べました。残念ながら、問題をデバッグできないため、解決された可能性のある問題を特定できませんでした。さらに、他のユーザーが1.4.1および1.4.2にアップグレードしても同じ問題を抱えていることがわかりました。

また、この問題は依存ライブラリの1つにある可能性があると考えています。

  • フラリー分析
  • Facebook iOS SDK
  • PayPal MPL
  • Hockeyapp ios lib
  • ASIHTTPRequest
  • CoreDataは使用しません

標準のiOSツールでこれをデバッグすることはできません。また、アプリを送信する前に閉じているため、ホッケーアプリがクラッシュレポートを提供することも期待できません。

この動作は理解できず、アプリストアから更新されている間は明らかにアプリを制御できません。アプリケーションが削除されても持続するものはありますか?そうでない場合は、再インストールしたアプリを開くのを妨げる可能性のあるものを知っていますか?

編集:applicationDidFinishLaunchingでhockeyapp libを構成しています:アプリデリゲートのメソッドは次のようになります:

[[BITHockeyManager sharedHockeyManager] configureWithIdentifier:QUINCY_APP_IDENTIFIER delegate:self];
[[BITHockeyManager sharedHockeyManager] setDisableUpdateManager:YES];
[[[BITHockeyManager sharedHockeyManager] crashManager] setCrashManagerStatus:BITCrashManagerStatusAutoSend];
[[BITHockeyManager sharedHockeyManager] startManager];
#ifdef DEBUG
  [[BITHockeyManager sharedHockeyManager] setDebugLogEnabled:YES];
#endif

アプリ識別子はビルド設定で構成され、構成ごとに異なります。

4

3 に答える 3

4

一般に、起動時に複数の問題が発生する可能性があります。

  1. 必要なライブラリが正しくリンクされていません: しかし、すべてのアプリの起動がクラッシュするため、これは問題ではありません!

  2. 起動に時間がかかりすぎて、アプリがウォッチドッグによって強制終了されました。

    これは、実行ループ内のメイン スレッドで大量のデータを移行する場合などに問題になる可能性があります。applicationDidFinishLaunching:そのため、アプリはユーザー入力に応答せず、約 20 秒後にウォッチドッグによって強制終了されます。

    メインスレッドをブロックせずに移行を行うようにしてください!

  3. 起動時にクラッシュ (強制終了ではありません!) が発生しています。HockeyApp SDK がクラッシュを送信する前にアプリがクラッシュするため、これらのクラッシュ レポートを取得することはできません。

    HockeyApp iOS SDK は、これらを処理するメカニズムを提供します。次のページの指示に従ってください: http://support.hockeyapp.net/kb/how-tos-faq/how-to-handle-crashes-during-startup- on-ios

したがって、2.または3.のいずれかが問題です。影響を受けているユーザーに直接連絡する機会があれば、iOS で生成されたクラッシュ レポートを求めることができます。それ以外の場合は、私が提供した推奨事項を確認してください。

于 2013-03-14T13:33:08.200 に答える
0

信じられませんが、ようやくアプリがクラッシュする理由がわかりました。

[[NSLocale currentLocale] objectForKey: NSLocaleCountryCode] は時々 nil を返します。これは常に有効であると仮定しましたが、明らかに間違っていました。

私はこの他の質問をここで見つけましたNSLocaleCountryCode は nil を返します。この問題のフォローアップには適切な場所である必要があります。

@kerni の提案のおかげで、hockeyapp にアプリケーション起動クラッシュのレポートを送信させることができましたが、残念ながら、これでは何が起こったのかを理解するのに十分ではありませんでした。レポートのスタック トレースは明確ではありませんでした。

数回試した後、フラリーに関連する別の悪いことを発見しました。これにより、システム例外がキャプチャされ、hockeyapp がクラッシュを正しく処理して適切なレポートを生成することが回避されました。この議論は、混乱した統合コードを特定して修正するのに非常に役立ちました

この変更の後、ようやく hockeyapp で適切なクラッシュ レポートを確認し、現在のロケールの問題を特定することができました。

于 2013-03-26T11:48:54.707 に答える
0

かつてこの問題がありました。アプリはアドホック ビルドとして正常に動作しました。Apple はそれをテストして承認しました。ただし、エンド ユーザーは開くとすぐにクラッシュします。

私たちにとっては、HockeyApp 製品 API キーを正しく渡していなかったことが判明しました。

固定ユーザーを取得したら、準備完了です。例えば:

[[BITHockeyManager sharedHockeyManager] configureWithBetaIdentifier:@"betaKeyHere"
                                                     liveIdentifier:@"liveKeyHere"
                                                           delegate:self];
于 2013-03-14T12:44:28.933 に答える