web-dev-qa-db-ja.com

プッシュ通知で起動されたときのアプリのデバッグ

現在、プッシュ通知を受信するアプリを開発しています。これはすべてPHPページで動作します。アプリが受信できるプッシュ通知にはいくつかの種類があります。PHPはこれを処理し、私のアプリへの情報パケットはすべて正常に受信されます。

ただし、ユーザーが通知を「表示」してアプリを起動すると、ユーザーがアプリを手動で起動した場合とは異なるアクションを実行したいことは明らかです。さらに、プッシュ通知タイプに応じて異なるアクションを実行します。これはうまく機能しています...構造的に。

私のプッシュタイプの1つは、複数の異なるサーバーに複数の接続を確立し、データをやり取りするUIViewを開くことになっています。このUIViewは、たとえばメインメニューからトリガーされると正常に機能しますが、プッシュ通知がこのUIViewの表示をトリガーすると、ソケット接続は期待どおりに機能しません。

さて、私の質問はソケットに関するものではなく、もっとそうです-このような問題をどのようにデバッグしますか?アプリがプッシュ通知から起動したときに私が知ることができることから(私は比較的新しい)、その実行をデバッガ/コンソール/などにリンクする方法はありません...を使用してコードをデバッグしようとするのは非常に困難ですUIAlertViews。さまざまなサーバー間で多くの通信ラインが存在するため。

あなたが私のために持っているアドバイスは大歓迎です。

131
Dutchie432

XCode <4.0(XCode> = 4の場合、以下のdelirusの回答を参照)では、デバッガーを介してアプリを起動する代わりに、起動後にアプリにデバッガーをアタッチするようにXcodeを構成できるようになりました。これにより、URLスキーム、ペーストボード、プッシュ通知など、アプリケーションの起動状態に基づいて変化するものをデバッグできます。

  1. Xcodeの[ソース]バーを見て、[ターゲット]の下に実行可能ファイルがあります。
  2. アプリのインスペクターを実行可能ファイルで起動します。
  3. インスペクターの「デバッグ」タブタブをクリックします。
  4. 「デバッガの起動後に実行可能ファイルを起動する」のチェックを外します
  5. 「次回の起動/プッシュ通知を待つ」を確認してください

これで、アプリを起動する代わりにXcodeからデバッグをクリックすると、アプリが起動するのを待っていることを示すウィンドウが表示されます。その後、通常どおり電話でアプリを起動し、Xcodeがそれに接続します。

144
Louis Gerbarg

Xcode 4の場合:

  1. 「スキーム」ドロップダウンからアクティブなスキームを編集します。 (+<
  2. 製品を選択するよりも-左側の「MyApp.appを実行」。
  3. 右側の「情報」タブを選択します。
  4. 最後に、「MyApp.appの起動を待つ」オプションを選択します。

詳細 こちら 「スキームエディタで実行可能ファイルをカスタマイズする」セクション。

編集:
GDBのログを見逃した場合は、Louis Gerbargの comment を参照してください。

120
matm

XCode 10、9、8、7、6の場合

  1. スキームの選択ツールバー(デバッグするデバイスのすぐ左)
  2. スキームの編集を選択します
  3. 左側のパネルでRunを選択します
  4. Launchオプションでは、起動する実行可能ファイルを待つを選択します
  5. スキームエディターを閉じて、実行 XCodeプロジェクト

通知、カスタムURLから起動するとき、またはアプリのアイコンをタッチすることでデバッグできるようになりました。

109
bgolson

私はプッシュ通知を使用していないため、プッシュ通知の正確な動作がわかりません。ただし、可能であれば、プログラムのメインメソッドに通知が投稿されたふりをするか、applicationDidFinishLaunching:メソッド内からapplication:didFinishLaunchingWithOptions:UIApplicationDelegateメソッドを呼び出して、プッシュ通知の受信を模倣しようとします。

HTH-歓声、大安

3
drvdijk

Xcode 6の場合:

  1. iPhoneをUSBでMacbookに接続する
  2. アイコンをタップして、iPhoneでアプリを起動します
  3. Xcodeメニューで、Debug> Attach to Process>アプリを選ぶ
3
Ali Saeed