本コンテンツは、投稿日時点での最新のiOS(Swift)アプリにおけるNew Relic Mobileエージェントのセットアップ手順を記載しています。最新の手順や詳細については、基本的にすべてドキュメントページに記載されているため、そちらをご参照ください。
アプリケーショントークン取得
まず最初に、アプリに組み込むためのトークンを以下の手順で取得してください。
- New Relicにログインし、画面右上の「+ Add more data」をクリック。
- 導入対象の選択肢のタイルが表示されるので、「Mobile monitoring」の「XCFramework」をクリック。
- 「Get started with New Relic Mobile」の画面が、XCFrameworkが選択された状態で表示されます。
- 任意のアプリ名を「Name your app to begin」の項目に入力し「Continue」をクリックすることで、トークンが発行されます。(アプリ名は後からでも変更可能です)
- 「Integrate and start the agent」の項目のコードスニペットの中にトークンが記載されるのでコピーして保存してください。
Agentの導入
本ページでは、Swift Package Managerを使った導入方法のみを記載します。CocoaPodsを利用してSwiftへ組み込む方法及び、SDKを直接組み込む方法に関しては、ドキュメントページをご参照ください。
- Xcodeで対象のプロジェクトを開いてください。
- 続いて画面上部のメニューから File > Swift Packages > Add Package Dependency... を開いてください。
- リポジトリの設定画面が表示されるので、
https://github.com/newrelic/newrelic-ios-agent-spm
を設定してNextをクリックしてください。 - 利用するバージョンのルールの選択画面が表示されるので、導入したいバージョンのルールを設定してください。
- 最後に設定する対象のTargetを選択し完了してください。
- SwiftUIで作成したケースなど、AppDelegate.swiftがない場合はこちらのステップで作成してください。(すでにある場合は、スキップしてください)
- AppDelegate.swiftという名前でファイルを追加
- 以下のようなコードをAppDelegate.swiftに追加
import SwiftUI
import UIKitclass AppDelegate: NSObject, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
return true
}
} - <アプリ名>App.swiftのファイルがあるので、以下のTODOの行のようにAppDelegateを追加してください。
@main
struct HelloSwiftUIApp: App {
//TODO Adding AppDelegate
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegatevar body: some Scene {
WindowGroup {
ContentView()
}
}
}
- Agentを起動するため、AppDelegate.swiftにAgent起動用のコードを追加してください。
- ファイルのimportブロックに、
import NewRelic
を追加 - application:didFinishLaunchingWithOptions:の関数に
NewRelic.start(withApplicationToken:"APP_TOKEN")
を追加
(APP_TOKEN
は、前述のアプリケーショントークンの取得で取得したトークンに置き換えてください。)
- ファイルのimportブロックに、
- これで、モバイルモニタリングが開始できるようになりました。試しにクラッシュが取得できることが確認できるよう、任意の箇所(例えば特定のボタンをクリックしたときに動作するコード)に、
を追加し、アプリをビルドして実行、クラッシュを発生させ、アプリを再起動してみてください。数分以内に、one.newrelic.comのMobileの画面で、クラッシュを確認することができます。NewRelic.crashNow()
- なお、アプリがデバッガと接続した状態で起動した場合、クラッシュの取得ができません。その場合、端末のログに「New Relic Crash Reporting is DISABLED because it has detected the debugger is enabled.」という表示されます。デバッガを切断した状態でアプリを再起動するか、XcodeのEdit Scheme...からDebug executableのチェックを外して実行して、クラッシュを発生させてみてください。
ビルドスクリプトの設定
iOSのクラッシュデータは、そのままでは関数名が表示されずクラッシュが発生した箇所や原因の特定が困難になります。そのためシンボル情報をアップロードするためにビルドスクリプトの設定を行ってください。なお、bitcodeが有効な場合は本スクリプトではアップロードされません。こちらを参照し、dSYMを取得して手動でのアップロードを行ってください。
- 対象となるTargetのBuild Phasesを表示し、+ボタンよりNew Run Script Phaseを選択し、Run Scriptを追加してください
- Run Scriptの中のShellの中に以下のコードを追加してください。(
APP_TOKEN
は、前述のアプリケーショントークンの取得で取得したトークンに置き換えてください。)SCRIPT=`/usr/bin/find "${SRCROOT}" -name newrelic_postbuild.sh | head -n 1`
if [ -z "${SCRIPT}"]; then
ARTIFACT_DIR="${BUILD_DIR%Build/*}SourcePackages/artifacts"
SCRIPT=`/usr/bin/find "${ARTIFACT_DIR}" -name newrelic_postbuild.sh | head -n 1`
fi/bin/sh "${SCRIPT}" "APP_TOKEN"
以上で基本的な設定は完了です。その他細かい設定の変更などは、以下の参考情報やドキュメントページをご参照ください。
参考情報
本ブログに掲載されている見解は著者に所属するものであり、必ずしも New Relic 株式会社の公式見解であるわけではありません。また、本ブログには、外部サイトにアクセスするリンクが含まれる場合があります。それらリンク先の内容について、New Relic がいかなる保証も提供することはありません。