راهاندازی افزونه iMessage
این راهنما را زمانی استفاده کنید که محصول شما شامل یک iMessage app extension (Messages extension) است و میخواهید ادتریس Session ها و رویدادها را درون آن افزونه ردیابی کند.
ابتدا شروع کار با iOS SDK را برای اپ اصلی iOS خود تکمیل کنید. این صفحه مراحل اضافی برای target افزونه iMessage را پوشش میدهد.
مرجع نمونه: AdtraceExample-iMessage.
پیش از شروع
| موضوع | اقدام لازم |
|---|---|
| اپ اصلی | نصب SDK، framework ها و appDidLaunch را در host app کامل کنید. |
| توکن اپ | یک اپ جداگانه در پنل ادتریس ایجاد کرده و توکن آن را در افزونه iMessage استفاده کنید. |
| چرا توکن جداگانه؟ | host app و افزونه iMessage در فضاهای حافظه متفاوت با bundle ID های مختلف اجرا میشوند. استفاده از یک توکن در هر دو مکان، دو instance مستقل SDK ایجاد کرده و ممکن است دادههای dashboard را با هم مخلوط کند. |
۱. افزودن SDK به target افزونه iMessage
مسیر یکپارچهسازی را بر اساس نحوه افزودن SDK به اپ اصلی خود انتخاب کنید.
از سورس
اگر Adtrace SDK را از سورس به target افزونه iMessage اضافه میکنید، preprocessor macro ADTUST_IM=1 را در تنظیمات target افزونه iMessage تنظیم کنید.
- در Xcode، target افزونه iMessage را انتخاب کنید.
- Build Settings را باز کنید.
- به دنبال Preprocessor Macros (یا GCC_PREPROCESSOR_DEFINITIONS) بگردید.
ADTUST_IM=1را برای Debug و Release اضافه کنید.
ADTUST_IM=1
به عنوان framework
اگر از framework مخصوص iMessage استفاده میکنید:
AdtraceSdkIm.frameworkرا به target افزونه iMessage خود اضافه کنید.- در Build Phases، یک فاز Copy Files اضافه کنید (یا از فاز موجود استفاده کنید).
- مقصد را روی Frameworks تنظیم کنید.
AdtraceSdkIm.frameworkرا اضافه کنید تا در زمان build به bundle افزونه کپی شود.
۲. مقداردهی اولیه SDK در افزونه
Adtrace را در افزونه iMessage خود به همان روش اپ standard مقداردهی اولیه کنید: یک ADTConfig با توکن اپ iMessage خود ایجاد کرده و appDidLaunch را هنگام شروع افزونه فراخوانی کنید.
از توکن اپ مخصوص iMessage از پنل استفاده کنید، نه توکن اپ host.
- Objective-C
- Swift
#import "Adtrace.h"
- (void)viewDidLoad {
[super viewDidLoad];
NSString *yourAppToken = @"{YourIMessageAppToken}";
NSString *environment = ADTEnvironmentSandbox;
ADTConfig *adtraceConfig = [ADTConfig configWithAppToken:yourAppToken
environment:environment
allowSuppressLogLevel:YES];
[Adtrace appDidLaunch:adtraceConfig];
}
import Adtrace
override func viewDidLoad() {
super.viewDidLoad()
let yourAppToken = "{YourIMessageAppToken}"
let environment = ADTEnvironmentSandbox
let adtraceConfig = ADTConfig(
appToken: yourAppToken,
environment: environment,
allowSuppressLogLevel: true
)
Adtrace.appDidLaunch(adtraceConfig)
}
برای production، environment را به ADTEnvironmentProduction تغییر دهید و یک سطح لاگ مناسب تنظیم کنید.
۳. فعالسازی ردیابی Session در افزونه
در یک اپ iOS standard، Adtrace SDK به notification های foreground/background سیستم گوش میدهد تا Session ها را اندازهگیری کند. افزونههای iMessage آن notification ها را دریافت نمیکنند، بنابراین باید به SDK بگویید افزونه چه زمانی فعال یا غیرفعال میشود.
وقتی افزونه وارد foreground میشود trackSubsessionStart و وقتی از آن خارج میشود trackSubsessionEnd را فراخوانی کنید.
امضاهای متد
+ (void)trackSubsessionStart;
+ (void)trackSubsessionEnd;
| متد | زمان فراخوانی |
|---|---|
trackSubsessionStart | افزونه در شرف نمایش UI است (کاربر iMessage app شما را باز کرده). |
trackSubsessionEnd | افزونه بسته شده، کاربر گفتگو ر ا تغییر داده یا Messages بسته شده. |
Hook کردن به lifecycle پیامها
فراخوانیها را در subclass MSMessagesAppViewController خود پیادهسازی کنید:
| callback UIKit / Messages | فراخوانی Adtrace |
|---|---|
didBecomeActiveWithConversation: | trackSubsessionStart |
willResignActiveWithConversation: | trackSubsessionEnd |
- Objective-C
- Swift
- (void)didBecomeActiveWithConversation:(MSConversation *)conversation {
[super didBecomeActiveWithConversation:conversation];
[Adtrace trackSubsessionStart];
}
- (void)willResignActiveWithConversation:(MSConversation *)conversation {
[super willResignActiveWithConversation:conversation];
[Adtrace trackSubsessionEnd];
}
override func didBecomeActive(with conversation: MSConversation) {
super.didBecomeActive(with: conversation)
Adtrace.trackSubsessionStart()
}
override func willResignActive(with conversation: MSConversation) {
super.willResignActive(with: conversation)
Adtrace.trackSubsessionEnd()
}
با این فراخوانیها، SDK میتواند طول Session را داخل افزونه iMessage اندازهگیری کند.
۴. ردیابی رویدادها (اختیاری)
بعد از مقداردهی اولیه، رویدادها را در افزونه به همان روش اپ اصلی ردیابی کنید. به ردیابی رویدادها مراجعه کنید.
- Objective-C
- Swift
ADTEvent *event = [ADTEvent eventWithEventToken:@"abc123"];
[Adtrace trackEvent:event];
let event = ADTEvent(eventToken: "abc123")
Adtrace.trackEvent(event)
۵. تست یکپارچهسازی
environmentرا رویADTEnvironmentSandboxو سطح لاگ را روی verbose تنظیمت کنید.- افزونه iMessage را روی یک دستگاه اجرا کنید (پشتیبانی شبیهساز از افزونههای Messages محدود است).
- iMessage app خود را داخل Messages باز کنید و ترافیک Session و رویداد را در لاگهای Xcode console تأیید کنید.
- دادهها را در پنل ادتریس زیر اپ iMessage که ایجاد کردید (نه host app) بررسی کنید.
برای مراحل کلی تأیید install، به تست یکپارچهسازی مراجعه کنید.
Checklist
- اپ iOS host با ادتریس یکپارچه شده
- اپ جداگانه و توکن اپ برای افزونه iMessage در پنل ایجاد شده
-
AdtraceSdkIm.frameworkیا یکپارچهسازی سورس باADTUST_IM=1 -
appDidLaunchدر افزونه با توکن اپ iMessage فراخوانی شده -
trackSubsessionStartدرdidBecomeActiveWithConversation:/didBecomeActive(with:) -
trackSubsessionEndدرwillResignActiveWithConversation:/willResignActive(with:) - لاگهای Sandbox و دادههای پنل قبل از انتشار production تأیید شده