このドキュメントではNew Relicでモニターできるように watchOS プロジェクトを更新する方法について説明します。 watchOS プロジェクトにはApplicationDelegateクラスまたはExtensionDelegateクラスがまだ含まれていないため、いずれか一方をプロジェクトに追加する必要があります。 これらのデリゲートは、watchOS プロジェクトで New Relic エージェントを設定および起動するために必要です。
要件
WatchAppDelegateを追加する前に、まずNew Relic エージェントをインストールしてください。
重要
適切なインストゥルメンテーションを確実に行うには、 applicationDidFinishLaunching()の最初のステップとしてエージェントを設定して起動し、メイン スレッドでエージェントを実行する必要があります。 後でバックグラウンド スレッドまたは非同期で呼び出しを開始すると、予期しない動作や不安定な動作が発生する可能性があります。
エージェントをインストールしたら、 WatchAppDelegateまたはwatchOs 拡張機能の使用に関する以下の手順を参照してください。
New Relicを有効にする WatchAppDelegate
プロジェクトに
WatchAppDelegate.swiftファイルを作成し、NSObjectから継承するWatchAppDelegateという名前のクラスを追加します。 このクラスはWKApplicationDelegateプロトコルに準拠する必要があります。applicationDidFinishLaunchingWatchAppDelegateクラスに追加します。applicationDidFinishLaunching関数の開始近くにNewRelic.start(withApplicationToken: "APP_TOKEN")を追加します。 必ずAPP_TOKENをアプリケーション トークンに置き換えてください。 コードは次のようになります。import WatchKitimport NewRelicclass WatchAppDelegate: NSObject, WKApplicationDelegate {func applicationDidFinishLaunching() {NewRelic.start(withApplicationToken: "APP_TOKEN")return true}}メイン アプリ構造オブジェクトに、次のスニペットを追加します。
import NewRelic@mainstruct Watch_App: App {@WKApplicationDelegateAdaptor var appDelegate: WatchAppDelegate}
watchOS拡張機能でNew Relicを有効にする
WatchKit 拡張機能の
Info.plistファイルにWKExtensionDelegateClassNameキーを追加します。 これにより、ExtensionDelegateという名前のデリゲート オブジェクトが自動的に作成されます。 詳細については、 WKExtensionDelegateを参照してください。作成した
ExtensionDelegateクラスに、applicationDidFinishLaunching関数を追加します。できるだけ
applicationDidFinishLaunchingの先頭に近いところに、APP_TOKENアプリケーション トークンに置き換えてNewRelic.start(withApplicationToken: "APP_TOKEN")を追加します。 コードは次のようになります。import WatckKitimport NewRelicclass ExtensionDelegate: NSObject, WKExtensionDelegate {func applicationDidFinishLaunching() {NewRelic.start(withApplicationToken: "APP_TOKEN")return true}}
watchOSプラットフォームの制限
Apple は、watchOS プラットフォームに同じ iOS API を提供していません。 つまり、特定の iOS エージェント機能は watchOS ではまだ利用できません。 私たちはプラットフォームの統一を目指しており、Apple が新しい機能をリリースするたびにエージェントを更新し続けます。 以下は、現在サポートされていない既知の機能の一部です。
- クラッシュ処理:
PLCrashReporterエージェントが使用するサードパーティ ライブラリであり、watchOS と互換性がありません。 - クラッシュ数: watchOS ではクラッシュが報告されないため、クラッシュ数を収集できません。
- 処理された例外: エージェントは処理された例外をキャプチャしてアップロードしますが、New Relic は現在それらを表示できません。
- バックグラウンド収集:
NRFeatureFlag_BackgroundReportingが有効になっている場合、エージェントは引き続きアプリケーションを監視しますが、バックグラウンドでは収集やNew Relicへのアップロードは行われません。 - オフラインでマークされたイベント:
NRFeatureFlag_OfflineStorageが有効になっている場合、エージェントはオフラインで収集した情報を保存し、オンラインになったときに送信できます。 ただし、オフライン状態で作成されたイベントは、属性レベルではそのようにマークされません。 - ホット/コールド アプリの起動時間: エージェントは UIKit 通知に依存してホット/コールド アプリの起動時間を取得しますが、この情報はまだ watchOS では利用できません。
追加のサポートが必要な場合は、 support.newrelic.comからサポートにお問い合わせください。