web-dev-qa-db-ja.com

デバッグ通知拡張機能

一連の通知拡張機能(サービス/コンテンツ)を構築しています。 Xcodeデバッガーに接続できず、デバイスのログやコンソールにログアウトすることさえできません。

何らかの出力を確認する方法はありますか?

31
dogsgod

ターゲットを変更して拡張機能を実行する

Change Target

[実行]を選択し、[実行するアプリの選択:]ウィンドウからアプリを選択します。

enter image description here

47
brendan

私はブレンダンの回答に従って試みましたが、私のためにまったく働いていません!

コンソールでエラーが発生しています

Program ended with exit code: 0

次に、Googleで検索した後、 this answer をチェックしました。しかし、これもしばらくの間私のために機能しませんでした!

次に、現在実行中のアプリを停止した後、答えに示されているのと同じ手順をもう一度試しました。その後、同じ手順に従います。明確にするために、この手順を以下のように書いています。

拡張機能を含むアプリを実行した後、

1) Set your breakpoint in the extension
2) Select Debug / Attach to Process by PID or name
3) Enter the name of the extension target
4) Trigger the Push notification

ステップ2の前に、現在実行中のアプリを必ず停止してください。

30

これは、拡張機能のブレークポイントで停止し、拡張機能ログを表示するのに役立ちました:

  1. メインアプリスキームではなく、通知拡張スキームを選択します
  2. アプリを実行し、リストからメインアプリを選択しますChoose an app to run
  3. Xcodeでアプリを停止しますおよびデバイスで手動で終了します。手動で終了しないと、手順6の後でMessage from debugger: Terminated due to signal 9になります。[pdate:デバイスでアプリを手動で終了する必要はないようです。機能しない場合は、どちらかの方法を試してください。 ]
  4. メニューDebug > Attach to Process by PID or Nameを選択します
  5. メインアプリ名ではなく、正しい拡張子名を入力します
  6. プッシュ通知を送信する
7
Manuel

通知サービス拡張(NSE)は、実際にはアプリの一部ではなく、アプリとは異なるプロセスID(PID)を持つと言った拡張です。 XCodeで「デバッグ」タブに移動し、「プロセスにアタッチ」までスクロールして、NSEが「Likely Targets」の下にリストされているかどうかを確認することにより、XCodeですべてのプロセスをリッスンできます。存在しない場合は、別のプッシュ通知をデバイスにサンディングし、表示されたら添付します。

enter image description here

これで、デバッグナビゲータでNESプロセスを確認でき、正常にデバッグできます。

enter image description here

3
Anaid

私の場合、上記のすべての方法にはいくつかの間違いがありました。要点は、Pushを1回送信し、デバッガーを介して接続し、Pushをデバッグに送信する必要があることです。したがって、完全なリスト:

  1. アプリを起動します(拡張機能ではありません)。

  2. XCodeからアプリを停止します。

  3. ワンプッシュを送信します。

  4. 「PIDまたは名前によるプロセスへの接続...」を介して、拡張プロセスに接続します。

  5. 別のプッシュを送信します。

1
Vlad Pulichev

これが役立つかどうかはわかりませんが、同じアプリの複数のビルド(アルファ版、ベータ版など)があります。デバッグしようとしたときに「アタッチする権限がありません」というエラーが表示され続けました。プロセスリストを開くと、notification-extensionという名前のプロセスが2つあることに気づいたので、xcodeは他のビルドの1つにデフォルト設定されていたはずです。適切なものを手動で選択するか、携帯電話から他のビルドを削除することで、物事が再び機能し始めました。

0
Josh

私のために働いた唯一の方法は、ログを表示することでした。 Xcode 10.1を使用します。ログは、[ウィンドウ]-> [デバイスとシミュレーター]->デバイスを選択-> [コンソールを開く]をクリックします。このようにして、拡張機能からのログも見ることができました。

0
Ajay Thomas