イベントをトラッキングする方法
すべてのイベントは、イベントの「名前」とイベントの プロパティ/属性 の2つの部分で構成されます。イベントとその属性をトラッキングするには、MoEngageProperties を使用する必要があります。 たとえば、次のコードはSuccessful Purchase イベントをトラッキングします。トラッキングするイベントを説明する属性として、Product NameやBrand Nameなどを含めています。
iOS SDK 11.0.0 以降:
MoEngageProperties(withAttributes:)とaddAttribute(_:withName:)は、Anyではなくany Sendableの値を受け取ります。属性ディクショナリは[String: any Sendable]として宣言してください。[String: Any]はコンパイルできません。trackEvent(_:withProperties:)はVoidではなく型付きのタスクオブジェクト(MoEngageTrackEventTask)を返すため、.onSuccess/.onFailureまたは非同期のresult()メソッドを通じて呼び出しごとの成功または失敗を監視できます。上記のような直接の呼び出しは変更なしでコンパイルされます。
非インタラクティブイベントMoEngage Analyticsのセッション時間の計算に一切影響を与えるべきでないイベントは、非インタラクティブイベントとしてマークする必要があります。詳細については、こちらを参照してください。
検証と制限
イベント属性には、DEBUG ビルドとリリースビルドの両方に適用される2つのレイヤーの検証があります。
- 命名とフォーマットのルール — ビルド構成に関係なく常に適用されます。以下の命名とフォーマットのルールを参照してください。
- 型の検証 — 無効な属性値(
null、カスタムモデル、NaN、Infinity、空のコレクション、ArrayまたはDictionary内にネストされたDate/MoEngageGeoLocationなどのサポートされていない型)は、DEBUGビルドでは致命的な例外を引き起こし、リリースビルドではペイロードから通知なく破棄されます。イベントの残りの部分はトラッキングされます。以下のサポートされている属性値の型を参照してください。
iOS SDKにおける
DEBUG モードとは、SDKが initializeDefaultTestInstance(_:)(TESTワークスペース)を使用して初期化され、アプリがXcodeに接続された状態で実行されていることを意味します。これは、デバッグシンボルが有効になっているリリースビルドとは異なります。命名とフォーマットのルール
- 属性名は空にできません。 属性名として空の文字列(
"")を渡すと、DEBUGビルドでは致命的な例外が発生します。リリースビルドでは、その属性は破棄されます。 - 予約済みプレフィックス。 イベント、イベント属性、ユーザー属性の名前に
moe_をプレフィックスとして使用することはできません。これはシステムプレフィックスであり、使用すると事前の連絡なく定期的にブロックリストに登録される場合があります。
サポートされている属性値の型
属性値は、String、Number、Date、MoEngageGeoLocation、Dictionary(文字列キーとサポートされている値を持つもの)、Array(サポートされている値の配列)のいずれかである必要があります。サポートされていない値が渡された場合:
DEBUGビルドでは、開発の早い段階でデータの問題を明らかにするため、SDKが致命的な例外をスローしてアプリをクラッシュさせます。- ReleaseビルドおよびTestFlightビルドでは、SDKは該当する無効な属性を通知なく破棄し、問題をログに記録します。イベントペイロードの残りの部分は引き続きトラッキングされます。
DEBUG 例外の一般的な原因:
null(NSNull())を渡す。- カスタムモデルやUI要素(例:
UIColor、UIImage)を渡す。 NaNやInfinityなどの無効な数値を渡す。- 空のArrayまたはDictionaryを渡す。
- ArrayまたはDictionary内に
DateまたはMoEngageGeoLocationオブジェクトをネストする。これらは値として直接渡す必要があります。
アップグレード中にこれらの
DEBUG 検証によってアプリがクラッシュする場合は、SDKを初期化する前に MoEngageSDKCore.sharedInstance.disableIntegrationValidator() を呼び出して一時的にオプトアウトしてください。問題が修正されたら、この呼び出しを削除してください。サポートされていない属性値のフィルタリング
新しいバージョンのiOS SDKにアップグレードする際に、呼び出し箇所で型が検証されていない属性値をアプリが渡している場合は、MoEngageProperties オブジェクトを構築する前に型チェックのガードを追加してください。これにより DEBUG でのクラッシュを防ぎ、すべてのビルドで有効なデータのみがSDKに届くようになります。
Date と MoEngageGeoLocation の値は、ディクショナリベースの withAttributes: イニシャライザーや addAttribute:withName: ではなく、専用の addDateAttribute、addDateEpochAttribute、addDateISOStringAttribute、addLocationAttribute メソッドを使用して渡す必要があります。