پرش به مطلب اصلی

دیپ‌لینک

اگر از tracker URL های ادتریس با deep linking فعال استفاده می‌کنید، می‌توانید URL deep link و محتوای آن را در اپ خود دریافت کنید.

کاربران می‌توانند URL را چه اپ نصب باشد چه نباشد باز کنند:

سناریواپ نصب است؟چه کسی deep link را تحویل می‌دهد
Standard (مستقیم)بلهiOS اپ را باز کرده و لینک را از طریق universal link یا custom URL scheme تحویل می‌دهد.
Deferredخیرکاربر ابتدا از App Store نصب می‌کند. iOS به طور خودکار deferred deep link ها را تحویل نمی‌دهد. Adtrace SDK محتوای deep link را بعد از install فراهم می‌کند.
Reattributionبله (re-engagement)iOS لینک را مانند جریان standard تحویل می‌دهد. appWillOpenUrl را هم فراخوانی می‌کنید تا ادتریس بتواند re-engagement را attribute کند.
SDK را زودتر مقداردهی اولیه کنید

Adtrace SDK را در application:didFinishLaunchingWithOptions: / application(_:didFinishLaunchingWithOptions:) مقداردهی اولیه کنید. اگر appWillOpenUrl را قبل از مقداردهی اولیه SDK فراخوانی کنید، داده‌های attribution از deep link برای همیشه از دست می‌رود. NSURL را در صف قرار دهید و appWillOpenUrl را بعد از appDidLaunch فراخوانی کنید در صورت نیاز. به شروع کار با iOS SDK مراجعه کنید.

ترتیب معمول یکپارچه‌سازی:

  1. راه‌اندازی standard deep linking (universal link یا custom URL scheme).
  2. Reattribute از deep link ها با appWillOpenUrl برای کمپین‌های re-engagement.
  3. مدیریت deferred deep link ها با AdtraceDelegate اگر کاربران ممکن است بعد از کلیک روی tracker URL نصب کنند.

راه‌اندازی standard deep linking

اگر کاربر قبلاً اپ را نصب کرده و یک tracker URL ادتریس که شامل اطلاعات deep link است را باز می‌کند، iOS می‌تواند اپ را اجرا کرده و آن deep link را تحویل دهد.

Universal link روش پیشنهادی در iOS مدرن است. ادتریس بخش زیادی از راه‌اندازی universal link را در پشت صحنه مدیریت می‌کند، اما باید هم پنل ادتریس و هم پروژه Xcode را پیکربندی کنید.

مراحل راه‌اندازی

  1. Universal link ها را برای اپ خود در پنل ادتریس فعال کنید.
  2. Associated Domains را برای اپ خود در پورتال Apple Developer فعال کنید.
  3. در Xcode، Associated Domains را برای target خود فعال کنید و domain از پنل را با پیشوند applinks: اضافه کنید. پیشوند http:// یا https:// را از domain حذف کنید.
  4. لینک را در continueUserActivity مدیریت کنید و webpageURL را parse کنید.
  5. برای کمپین‌های re-engagement، appWillOpenUrl را با URL فراخوانی کنید.

مثال: اگر پنل https://app.adtrace.io/your-domain را نشان می‌دهد، این را در Xcode Associated Domains اضافه کنید:

applinks:app.adtrace.io/your-domain

application:continueUserActivity:restorationHandler: را در app delegate خود override کنید. URL universal link در userActivity.webpageURL است.

AppDelegate.m
- (BOOL)application:(UIApplication *)application
continueUserActivity:(NSUserActivity *)userActivity
restorationHandler:(void (^)(NSArray *))restorationHandler {
if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
NSURL *url = userActivity.webpageURL;
// از url برای منطق اپ استفاده کنید
[Adtrace appWillOpenUrl:url];
}
return YES;
}

Custom URL scheme (قدیمی)

در iOS 8 و قبل‌تر، و برای اپ‌هایی که هنوز از custom URL scheme استفاده می‌کنند، یک scheme یکتا در Info.plist اپ خود زیر URL types (CFBundleURLTypes) ثبت کنید، سپس application:openURL:options: را مدیریت کنید.

از همان scheme در پارامتر deep_link tracker URL خود (URL-encoded) استفاده کنید. برای مثال adtraceExample:// که به صورت adtraceExample%3A%2F%2F encode شده است.

AppDelegate.m
- (BOOL)application:(UIApplication *)app
openURL:(NSURL *)url
options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options {
// url شامل محتوای deep link شما است
[Adtrace appWillOpenUrl:url];
return YES;
}
URL-encode کردن پارامترهای tracker

باید مقدار پارامتر deep_link را در tracker URL URL-encode کنید. در اپ خود، مقداری که دریافت می‌کنید encode نشده است.

اگر منطق اپ شما انتظار فرمت custom URL scheme دارد اما کاربر از طریق universal link می‌رسد، URL را با convertUniversalLink:scheme: تبدیل کنید.

Method signature

+ (NSURL *)convertUniversalLink:(NSURL *)url scheme:(NSString *)scheme;
پارامترنوعتوضیح
urlNSURLURL universal link از continueUserActivity.
schemeNSStringنام custom URL scheme شما (برای مثال adtraceExample).

مثال

NSURL *oldStyleDeeplink = [Adtrace convertUniversalLink:url scheme:@"adtraceExample"];

ادتریس از کمپین‌های re-engagement با deep link پشتیبانی می‌کند. وقتی کاربری که قبلاً اپ را نصب کرده یک tracker URL با محتوای deep link را باز می‌کند، Adtrace SDK را فراخوانی کنید تا داده‌های attribution جدید را از لینک بخواند و به backend ادتریس ارسال کند.

ابتدا راه‌اندازی standard deep linking را کامل کنید، سپس appWillOpenUrl را هر جا که لینک‌های ورودی را مدیریت می‌کنید اضافه کنید.

Method signature

+ (void)appWillOpenUrl:(NSURL *)url;
پارامترنوعتوضیح
urlNSURLURL deep link از continueUserActivity یا openURL.
مهم

اگر appWillOpenUrl را قبل از [Adtrace appDidLaunch:] / Adtrace.appDidLaunch(...) فراخوانی کنید، داده‌های attribution از deep link برای همیشه از دست می‌رود. URL را در صف قرار دهید و appWillOpenUrl را بعد از شروع SDK فراخوانی کنید.

SDK URL را برای اطلاعات attribution جدید بررسی می‌کند. اگر داده‌ای پیدا کرد، آن را برای reattribution به ادتریس ارسال می‌کند. از دریافت اطلاعات attribution برای خواندن attribution به‌روز در اپ خود استفاده کنید.

appWillOpenUrl را از handler universal link یا custom scheme خود فراخوانی کنید (نمونه‌های بالا را ببینید).

اپ‌های WebBridge

اگر اپ از WebBridge استفاده می‌کند، می‌توانید appWillOpenUrl را از JavaScript bridge در WebView وقتی یک deep link در لایه وب باز می‌شود فراخوانی کنید:

Adtrace.appWillOpenUrl(deeplinkUrl);

Deferred deep linking زمانی اعمال می‌شود که کاربر اپ شما را نصب نکرده باشد. آن‌ها یک tracker URL با deep_link را باز می‌کنند، از App Store نصب می‌کنند، سپس آن را باز می‌کنند. iOS آن deep link را به صورت native تحویل نمی‌دهد. Adtrace SDK محتوای deep link را بعد از install فراهم می‌کند.

به طور پیش‌فرض، Adtrace SDK deferred deep link ها را به صورت خودکار باز می‌کند. AdtraceDelegate را پیاده‌سازی کنید اگر می‌خواهید کنترل کنید SDK لینک را باز می‌کند یا نه.

از همان پروتکل AdtraceDelegate برای attribution و callback های رویداد و Session استفاده می‌شود. برای راه‌اندازی کامل delegate، به ارسال اطلاعات callback مراجعه کنید.

متد delegate

- (BOOL)adtraceDeeplinkResponse:(NSURL *)deeplink;
مقدار بازگشتیرفتار
YES / trueبگذارید Adtrace SDK deep link را باز کند.
NO / falseآن را باز نکنید. URL را ذخیره کنید و در صورت نیاز خودتان navigation را مدیریت کنید.

delegate را روی instance ADTConfig خود قبل از appDidLaunch تنظیم کنید:

AppDelegate.m
@interface AppDelegate () <AdtraceDelegate>
@end

// در didFinishLaunchingWithOptions:
[adtraceConfig setDelegate:self];

- (BOOL)adtraceDeeplinkResponse:(NSURL *)deeplink {
// deeplink شامل محتوای deferred deep link است
return YES; // یا NO برای مدیریت خودتان
}

callback بعد از اینکه SDK یک deferred deep link از سرور دریافت کرد و قبل از باز کردن آن اجرا می‌شود.

اگر این متد را پیاده‌سازی نکنید، Adtrace SDK به طور پیش‌فرض همیشه سعی می‌کند deep link را باز کند.

NO / false برگردانید تا SDK URL را به صورت خودکار اجرا نکند:

- (BOOL)adtraceDeeplinkResponse:(NSURL *)deeplink {
// deeplink را ذخیره کنید و وقتی UI آماده شد navigate کنید
return NO;
}