diff --git a/src/content/docs/ja/sdk/migration/adobe-extension/ios/index.mdoc b/src/content/docs/ja/sdk/migration/adobe-extension/ios/index.mdoc new file mode 100644 index 000000000..22c69c63e --- /dev/null +++ b/src/content/docs/ja/sdk/migration/adobe-extension/ios/index.mdoc @@ -0,0 +1,367 @@ +--- +title: iOS Adobe Extension v3移行ガイド +description: Extensionをv2からv3に移行するには、このガイドの手順に従ってください。 +sidebar-label: iOS v3移行ガイド +sidebar-position: 1 +--- + +[Adobe Experience SDKのAdjust Extension](https://github.com/adjust/ios_adobe_extension)がv3にアップデートされ、Adjust iOS SDK v5のサポートが追加されました。Extensionをv2からv3に移行するには、このガイドの手順に従ってください。 + +{% callout type="important" %} +移行する前に、iOS 12以降をサポートするようにアプリを更新してください。 +{% /callout %} + +Swift Package Managerを使用して、Adobe ExperienceのAdjust iOS Extension v3をインストールするには、次のURLを入力します。 + +```txt +https://github.com/adjust/ios_adobe_extension.git +``` + +CocoaPodsを使用している場合は、以下の行を`Podfile`に追加します。 + +{% codeblock title="Podfile" showLineNumbers=false %} +```rb +pod 'AdjustAdobeExtension' +``` +{% /codeblock %} + +Adobe ExperienceのAdjust iOS Extensionを設定する方法については、 [連携ガイド](/ja/sdk/adobe-extension/ios/integration)を参照してください。 + +新規API {% #new-apis %} + +--- + +{% minorversion added="v3" size="large" /%} + +Extension v3では、以下のAPIが追加されました。 + +### ショートブランドリンクの解析{% #resolve-short-branded-links %} + +Adobe Experience SDKのAdjust Extension v3では、[ショートブランドリンク](https://help.adjust.com/ja/article/short-branded-links)の解析に対するサポートが追加されます。短縮リンクを解析するには、以下の引数を使用して `Adjust.processAndResolveDeeplink` メソッドを呼び出します。 + +{% deflist %} +`deeplink`: `NSURL` + +: アプリを起動するディープリンク。 + +`withCompletionHandler`: `ADJResolvedDeeplinkBlock` + +: 解析されたショートリンクを引数として受け取る完了関数。 +{% /deflist %} + +{% tabs %}{% tab title="Swift" sync="swift" /%}{% /tabs %} + + +```swift +func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { + if userActivity.activityType == NSUserActivityTypeBrowsingWeb { + if let incomingUrl = userActivity.webpageUrl { + if let deeplink = ADJDeeplink(deeplink: incomingUrl) { + Adjust.processAndResolveDeeplink(deeplink) { resolveDeeplink in + print("[\(resolveDeeplink)]") + } + } + } + } + return true +} +``` + +{% tab /%} + +{% tab title="Objective-C" sync="objc" %} +```objc +- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray> * _Nullable))restorationHandler { + if ([[userActivity activityType] isEqualToString:NSUserActivityTypeBrowsingWeb]) { + ADJDeeplink *deeplink = [[ADJDeeplink alloc] initWithDeeplink:[userActivity webpageURL]]; + [Adjust processAndResolveDeeplink:deeplink + withCompletionHandler:^(NSString * _Nullable resolvedLink) { + NSLog(@"[%@]", resolvedLink); + }]; + } + return YES; +} +``` +{% /tab %} + +{% tabs /%} + +### グローバルコールバックパラメーター {% #global-callback-parameters %} + +Adobe Experience SDKのAdjust Extension v3では、iOS SDK v5によるグローバルコールバックパラメーターAPIのサポートが追加されます。セッションにグローバルコールバックを追加するには、次の引数を指定して `Adjust.addGlobalCallbackParameter` メソッドを呼び出します。 + +{% deflist %} +`key`: `NSString` + +: パラメーターのキー。 + +`value`: `NSString` + +: パラメーターの値。{% deflist /%} + +{% tabs %}{% tab title="Swift" sync="swift" /%}{% /tabs %} + + +```swift +Adjust.addGlobalCallbackParameter("value", forKey: "key") +Adjust.addGlobalCallbackParameter("855", forKey: "user_id") +``` + +{% tab /%} + +{% tab title="Objective-C" sync="objc" %} +```objc +[Adjust addGlobalCallbackParameter:@"value" forKey:@"key"]; +[Adjust addGlobalCallbackParameter:@"855" forKey:@"user_id"]; +``` +{% /tab %} + +{% tabs /%} + +[グローバルコールバックの設定方法](/ja/sdk/adobe-extension/ios/global-parameters#global-callback-parameters)をご確認ください。 + +### グローバルパートナーパラメーター {% #global-partner-parameters %} + +Adobe Experience SDKのAdjust Extension v3では、iOS SDK v5によるグローバルパートナーパラメーターAPIのサポートが追加されます。グローバルパートナーパラメーターを追加するには、以下の引数を使用して`Adjust.addGlobalPartnerParameter`メソッドを呼び出します。 + +{% deflist %} +`key`: `String` + +: パラメーターのキー。 + +`value`: `String` + +: パラメーターの値。{% deflist /%} + +{% tabs %}{% tab title="Swift" sync="swift" /%}{% /tabs %} + + +```swift +Adjust.addGlobalPartnerParameter("value", forKey: "key") +Adjust.addGlobalPartnerParameter("855", forKey: "user_id") +``` + +{% tab /%} + +{% tab title="Objective-C" sync="objc" %} +```objc +[Adjust addGlobalPartnerParameter:@"value" forKey:@"key"]; +[Adjust addGlobalPartnerParameter:@"855" forKey:@"user_id"]; +``` +{% /tab %} + +{% tabs /%} + +[グローバルパートナーパラメーターの設定方法](/ja/sdk/adobe-extension/ios/global-parameters#global-partner-parameters)をご確認ください。 + +### 外部デバイスIDを設定する {% #set-external-device-id %} + +Adobe Experience SDKのAdjust Extension v3では、[外部デバイスID](https://help.adjust.com/ja/article/external-device-identifiers)設定のサポートが追加されます。外部デバイスIDを設定するには、以下の引数で `AdjustAdobeExtensionConfig` の `setExternalDeviceId` メソッドを呼び出します。 + +{% deflist %} +`externalDeviceId`: `NSString` + +: 外部デバイスID。{% deflist /%} + +{% tabs %}{% tab title="Swift" sync="swift" /%}{% /tabs %} + + +```swift +if let config = AdjustAdobeExtensionConfig(environment: ADJEnvironmentSandbox) { + config.setExternalDeviceId("{% $variables.config.externalDeviceId %}") + AdjustAdobeExtension.setConfiguration(config) +} +``` + +{% tab /%} + +{% tab title="Objective-C" sync="objc" %} +```objc +AdjustAdobeExtensionConfig *config = [AdjustAdobeExtensionConfig configWithEnvironment:ADJEnvironmentSandbox]; +[config setExternalDeviceId:@"{% $variables.config.externalDeviceId %}"]; +[AdjustAdobeExtension setConfiguration:config]; +``` +{% /tab %} + +{% tabs /%} + +[外部デバイスIDの設定方法](/ja/sdk/adobe-extension/ios/external-device-id)をご確認ください。 + +### プリインストールアプリのデフォルトリンクトークンの設定{% #set-default-link-token-preinstalled-apps %} + +Adobe Experience SDKのAdjust Extension v3では、プレインストールされたアプリインストールをデフォルトキャンペーンに記録するため、デフォルトの[リンクトークン](https://help.adjust.com/ja/article/links)を設定することができます。デフォルトのリンクトークンを設定するには、以下の引数を使用して `AdjustAdobeExtensionConfig` インスタンスの `setDefaultTracker` メソッドを呼び出します。 + +{% deflist %} +`defaultTracker`: `NSString` + +: プリインストールキャンペーン用の英数字のリンクトークン。{% deflist /%} + +{% tabs %}{% tab title="Swift" sync="swift" /%}{% /tabs %} + + +```swift +if let config = AdjustAdobeExtensionConfig(environment: ADJEnvironmentSandbox) { + config.setDefaultTracker("abc123") + AdjustAdobeExtension.setConfiguration(config) +} +``` + +{% tab /%} + +{% tab title="Objective-C" sync="objc" %} +```objc +AdjustAdobeExtensionConfig *config = [AdjustAdobeExtensionConfig configWithEnvironment:ADJEnvironmentSandbox]; +[config setDefaultTracker:@"abc123"]; +[AdjustAdobeExtension setConfiguration:config]; +``` +{% /tab %} + +{% tabs /%} + +[プリインストールアプリのアクティビティを送信する方法](/ja/sdk/adobe-extension/ios/preinstalled)をご確認ください。 + +変更されたAPI {% #changed-apis %} + +--- + +{% minorversion changed="v3" size="large" /%} + +Extension v3では、以下のAPIが変更されました。 + +### ダイレクトディープリンク{% #direct-deep-linking %} + +SDK v2では、ディープリンクデータを引数として`AdjustAdobeExtension.application`メソッドを呼び出すことで、アトリビューションのディープリンクを開くことができます。 + +{% tabs %} +{% tab title="Swift" sync="swift" %} +```swift +func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool { + return AdjustAdobeExtension.application(app, open: url, options: options) +} +``` +{% /tab %} + +{% tab title="Objective-C" sync="objc" %} +```objc +- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options { + return [AdjustAdobeExtension application:app openURL:url options:options]; +} +``` +{% /tab %} +{% /tabs %} + +SDK v3では、Adjust iOS SDKの`processDeeplink`メソッドを使用するように更新されました。ダイレクトディープリンクを開くには、以下の手順に従ってください。 + +1. ディープリンクURLを使用して新しい`ADJDeeplink`インスタンスを作成します。 + +1. `Adjust.processDeeplink` メソッドに`ADJDeeplink`インスタンスをパスします。 + + {% tabs %} + {% tab title="Swift" sync="swift" %} + ```swift + func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool { + if let deeplink = ADJDeeplink(deeplink: url) { + Adjust.processDeeplink(deeplink) + } + return true + } + ``` + {% /tab %} + + {% tab title="Objective-C" sync="objc" %} + ```objc + - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options { + [Adjust processDeeplink: [[ADJDeeplink alloc] initWithDeeplink:url]]; + return YES; + } + ``` + {% /tab %} + {% /tabs %} + + [ダイレクトディープリンクでユーザーをリアトリビュートする方法](/ja/sdk/adobe-extension/ios/deep-linking#reattribute-users-with-direct-deep-links)をご確認ください。 + + ### ディファードディープリンクのコールバック {% #deferred-deep-linking-callback %} + + SDK v2では、`AdjustAdobeExtensionConfig`インスタンスの`setDeeplinkResponseBlock`メソッドに関数をパスするように設定することで、ディファードディープリンクが開いた時にコールバック関数を起動させることができます。 + + {% tabs %} + {% tab title="Swift" sync="swift" %} + ```swift + if let config = AdjustAdobeExtensionConfig(environment: ADJEnvironmentSandbox) { + config.setDeeplinkResponseBlock { deepLink in + // Deep link response received + // Apply your logic to determine whether the Adjust SDK should try to open the deep link + return true; + // or + // return false; + } + AdjustAdobeExtension.setConfiguration(config) + } + ``` + {% /tab %} + + {% tab title="Objective-C" sync="objc" %} + ```objc + AdjustAdobeExtensionConfig *config = [AdjustAdobeExtensionConfig configWithEnvironment:ADJEnvironmentSandbox]; + [config setDeeplinkResponseBlock:^BOOL(NSURL * _Nullable deeplink) { + // Deep link response received + // Apply your logic to determine whether the Adjust SDK should try to open the deep link + return YES; + // or + // return NO; + }]; + [AdjustAdobeExtension setConfiguration:config]; + ``` + {% /tab %} + {% /tabs %} + + SDK v3では、このメソッドの名前が`setDeeplinkResponseBlock`から`setDeferredDeeplinkReceivedBlock`に変更されました。 + + {% tabs %} + {% tab title="Swift" sync="swift" %} + ```swift + if let config = AdjustAdobeExtensionConfig(environment: ADJEnvironmentSandbox) { + config.setDeferredDeeplinkReceivedBlock { (deeplink: URL?) -> Bool in + if let deeplinkString = deeplink?.absoluteString.lowercased(), + deeplinkString.contains("no_open") { + return false + } + return true + } + AdjustAdobeExtension.setConfiguration(config) + } + ``` + {% /tab %} + + {% tab title="Objective-C" sync="objc" %} + ```objc + AdjustAdobeExtensionConfig *config = [AdjustAdobeExtensionConfig configWithEnvironment:ADJEnvironmentSandbox]; + [config setDeferredDeeplinkReceivedBlock:^BOOL(NSURL * _Nullable deeplink) { + if (deeplink && [[deeplink.absoluteString lowercaseString] containsString:@"no_open"]) { + return NO; + } + return YES; + }]; + [AdjustAdobeExtension setConfiguration:config]; + ``` + {% /tab %} + {% /tabs %} + + [ディファードディープリンクコールバックとの利用方法](/ja/sdk/adobe-extension/ios/deep-linking#deferred-deep-link-callbacks)をご確認ください。 + +{% deflist /%} + +{% deflist /%} + +{% deflist /%} + +{% deflist /%} + +{% /deflist %} + +{% /deflist %} + +{% /deflist %} + +{% /deflist %} + diff --git a/src/content/docs/ko/sdk/migration/adobe-extension/ios/index.mdoc b/src/content/docs/ko/sdk/migration/adobe-extension/ios/index.mdoc new file mode 100644 index 000000000..98ca81e92 --- /dev/null +++ b/src/content/docs/ko/sdk/migration/adobe-extension/ios/index.mdoc @@ -0,0 +1,359 @@ +--- +title: iOS Adobe Extension v3 마이그레이션 가이드 +description: 이 가이드에 따라 v2에서 v3로 마이그레이션 +sidebar-label: iOS v3 마이그레이션 가이드 +sidebar-position: 1 +--- + +[Adobe Experience SDK용 Adjust 확장판](https://github.com/adjust/ios_adobe_extension)이 v3로 업데이트되어 Adjust iOS SDK v5를 지원합니다. 이 가이드에 따라 v2에서 v3로 마이그레이션하시기 바랍니다. + +{% callout type="important" %} +마이그레이션하기 전에 iOS 12 이상을 지원하도록 앱을 업데이트해야 합니다. +{% /callout %} + +Swift Package Manager를 사용하여 Adobe Experience용 Adjust iOS Extension v3를 설치하려면 다음 URL을 입력합니다. + +```txt +https://github.com/adjust/ios_adobe_extension.git +``` + +CocoaPods를 사용하는 경우 `Podfile`에 다음 라인을 추가합니다. + +{% codeblock title="Podfile" showLineNumbers=false %} +```rb +pod 'AdjustAdobeExtension' +``` +{% /codeblock %} + +Adobe Experience용 Adjust iOS Extension 설정 통합 가이드는 [연동 가이드](/ko/sdk/adobe-extension/ios/integration)를 참조하시기 바랍니다. + +새 API {% #new-apis %} + +--- + +{% minorversion added="v3" size="large" /%} + +다음 API가 v3에 추가되었습니다. + +### 숏 브랜드 링크 해석 {% #resolve-short-branded-links %} + +Adobe Experience SDK용 Adjust Extension v3는 [숏 브랜드 링크](https://help.adjust.com/ko/article/short-branded-links) 해석 지원이 추가되었습니다. 단축된 링크를 해석하려면 다음 인수로 `Adjust.processAndResolveDeeplink` 메서드를 호출합니다. + +{% deflist %} +`deeplink`: `NSURL` + +: 앱을 연 딥링크 + +`withCompletionHandler`: `ADJResolvedDeeplinkBlock` + +: 해석된 단축 링크를 인수로 수신하는 완료 함수 +{% /deflist %} + +{% tabs %} {% tab title="Swift" sync="swift" /%}{% /tabs %} + + +```swift +func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { + if userActivity.activityType == NSUserActivityTypeBrowsingWeb { + if let incomingUrl = userActivity.webpageUrl { + if let deeplink = ADJDeeplink(deeplink: incomingUrl) { + Adjust.processAndResolveDeeplink(deeplink) { resolveDeeplink in + print("[\(resolveDeeplink)]") + } + } + } + } + return true +} +``` + +{% tab /%} + +{% tab title="Objective-C" sync="objc" %} +```objc +- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray> * _Nullable))restorationHandler { + if ([[userActivity activityType] isEqualToString:NSUserActivityTypeBrowsingWeb]) { + ADJDeeplink *deeplink = [[ADJDeeplink alloc] initWithDeeplink:[userActivity webpageURL]]; + [Adjust processAndResolveDeeplink:deeplink + withCompletionHandler:^(NSString * _Nullable resolvedLink) { + NSLog(@"[%@]", resolvedLink); + }]; + } + return YES; +} +``` +{% /tab %} + +{% tabs /%} + +### 글로벌 콜백 파라미터 {% #global-callback-parameters %} + +Adobe Experience SDK용 Adjust Extension v3는 iOS SDK v5의 글로벌 콜백 파라미터 API 지원이 추가되었습니다. 세션에 글로벌 콜백을 추가하려면 다음 인수로 `Adjust.addGlobalCallbackParameter` 메서드를 호출합니다. + +{% deflist %} +`key`: `NSString` + +: 파라미터의 키 + +`value`: `NSString` + +: 파라미터의 값 +{% /deflist %} + +{% tabs %} {% tab title="Swift" sync="swift" /%}{% /tabs %} + + +```swift +Adjust.addGlobalCallbackParameter("value", forKey: "key") +Adjust.addGlobalCallbackParameter("855", forKey: "user_id") +``` + +{% tab /%} + +{% tab title="Objective-C" sync="objc" %} +```objc +[Adjust addGlobalCallbackParameter:@"value" forKey:@"key"]; +[Adjust addGlobalCallbackParameter:@"855" forKey:@"user_id"]; +``` +{% /tab %} + +{% tabs /%} + +[글로벌 콜백 설정](/ko/sdk/adobe-extension/ios/global-parameters#global-callback-parameters) 방법을 알아보시기 바랍니다. + +### 글로벌 파트너 파라미터 {% #global-partner-parameters %} + +Adobe Experience SDK용 Adjust Extension v3는 iOS SDK v5의 글로벌 파트너 파라미터 API 지원이 추가되었습니다. 글로벌 파트너 파라미터를 추가하려면 다음 인수로 `Adjust.addGlobalPartnerParameter` 메서드를 호출합니다. + +{% deflist %} +`key`: `String` + +: 파라미터의 키 + +`value`: `String` + +: 파라미터의 값 +{% /deflist %} + +{% tabs %} {% tab title="Swift" sync="swift" /%}{% /tabs %} + + +```swift +Adjust.addGlobalPartnerParameter("value", forKey: "key") +Adjust.addGlobalPartnerParameter("855", forKey: "user_id") +``` + +{% tab /%} + +{% tab title="Objective-C" sync="objc" %} +```objc +[Adjust addGlobalPartnerParameter:@"value" forKey:@"key"]; +[Adjust addGlobalPartnerParameter:@"855" forKey:@"user_id"]; +``` +{% /tab %} + +{% tabs /%} + +[글로벌 파트너 파라미터 설정](/ko/sdk/adobe-extension/ios/global-parameters#global-partner-parameters) 방법을 알아보시기 바랍니다. + +### 외부 기기 ID 전송 {% #set-external-device-id %} + +Adobe Experience SDK용 Adjust Extension v3는 [외부 기기 식별자](https://help.adjust.com/ko/article/external-device-identifiers) 설정 지원이 추가되었습니다. 외부 기기 ID를 설정하려면 다음 인수로 `AdjustAdobeExtensionConfig` 인스턴스의 `setExternalDeviceId` 메서드를 호출합니다. + +{% deflist %} +`externalDeviceId`: `NSString` + +: 외부 기기 식별자 +{% /deflist %} + +{% tabs %} {% tab title="Swift" sync="swift" /%}{% /tabs %} + + +```swift +if let config = AdjustAdobeExtensionConfig(environment: ADJEnvironmentSandbox) { + config.setExternalDeviceId("{% $variables.config.externalDeviceId %}") + AdjustAdobeExtension.setConfiguration(config) +} +``` + +{% tab /%} + +{% tab title="Objective-C" sync="objc" %} +```objc +AdjustAdobeExtensionConfig *config = [AdjustAdobeExtensionConfig configWithEnvironment:ADJEnvironmentSandbox]; +[config setExternalDeviceId:@"{% $variables.config.externalDeviceId %}"]; +[AdjustAdobeExtension setConfiguration:config]; +``` +{% /tab %} + +{% tabs /%} + +[외부 기기 ID 설정](/ko/sdk/adobe-extension/ios/external-device-id) 방법을 알아보시기 바랍니다. + +### 사전 설치 앱에 대한 기본 링크 토큰 설정 {% #set-default-link-token-preinstalled-apps %} + +Adobe Experience SDK용 Adjust Extension v3는 기본 캠페인에 사전 설치 앱의 설치를 기혹하기 위한 기본 [링크 토큰](https://help.adjust.com/ko/article/links) 설정 지원이 추가되었습니다. 기본 링크 토큰을 설정하려면 다음 인수로 `AdjustAdobeExtensionConfig` 인스턴스의 `setDefaultTracker` 메서드를 호출합니다. + +{% deflist %} +`defaultTracker`: `NSString` + +: 사전 설치 캠페인의 영숫자 링크 토큰 +{% /deflist %} + +{% tabs %} {% tab title="Swift" sync="swift" /%}{% /tabs %} + + +```swift +if let config = AdjustAdobeExtensionConfig(environment: ADJEnvironmentSandbox) { + config.setDefaultTracker("abc123") + AdjustAdobeExtension.setConfiguration(config) +} +``` + +{% tab /%} + +{% tab title="Objective-C" sync="objc" %} +```objc +AdjustAdobeExtensionConfig *config = [AdjustAdobeExtensionConfig configWithEnvironment:ADJEnvironmentSandbox]; +[config setDefaultTracker:@"abc123"]; +[AdjustAdobeExtension setConfiguration:config]; +``` +{% /tab %} + +{% tabs /%} + +[사전 설치된 앱 활동 전송](/ko/sdk/adobe-extension/ios/preinstalled) 방법을 알아보시기 바랍니다. + +변경된 API {% #changed-apis %} + +--- + +{% minorversion changed="v3" size="large" /%} + +다음 API가 v3에서 변경되었습니다. + +### 다이렉트 딥링크 {% #direct-deep-linking %} + +SDK v2에서는 딥링크 데이터를 인수로 `AdjustAdobeExtension.application` 메서드를 호출하여 어트리뷰션에 대한 딥링크를 열 수 있습니다. + +{% tabs %} +{% tab title="Swift" sync="swift" %} +```swift +func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool { + return AdjustAdobeExtension.application(app, open: url, options: options) +} +``` +{% /tab %} + +{% tab title="Objective-C" sync="objc" %} +```objc +- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options { + return [AdjustAdobeExtension application:app openURL:url options:options]; +} +``` +{% /tab %} +{% /tabs %} + +SDK v3가 Adjust iOS SDK의 `processDeeplink` 메서드를 사용하도록 업데이트되었습니다. 다이렉트 딥링크를 여는 방법은 다음과 같습니다. + +1. 딥링크 URL로 새로운 `ADJDeeplink` 인스턴스를 생성합니다. + +1. `ADJDeeplink` 인스턴스를 `Adjust.processDeeplink` 메서드에 전달합니다. + + {% tabs %} + {% tab title="Swift" sync="swift" %} + ```swift + func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool { + if let deeplink = ADJDeeplink(deeplink: url) { + Adjust.processDeeplink(deeplink) + } + return true + } + ``` + {% /tab %} + + {% tab title="Objective-C" sync="objc" %} + ```objc + - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options { + [Adjust processDeeplink: [[ADJDeeplink alloc] initWithDeeplink:url]]; + return YES; + } + ``` + {% /tab %} + {% /tabs %} + + [다이렉트 딥링크를 사용하여 사용자 리어트리뷰션](/ko/sdk/adobe-extension/ios/deep-linking#reattribute-users-with-direct-deep-links) 방법을 알아보시기 바랍니다. + + ### 디퍼드 딥링크 콜백 {% #deferred-deep-linking-callback %} + + SDK v2에서는 `AdjustAdobeExtensionConfig` 인스턴스의 `setDeeplinkResponseBlock` 메서드에 함수를 전달하여 디퍼드 딥링크가 열릴 때 콜백 함수를 실행하도록 SDK를 구성할 수 있습니다. + + {% tabs %} + {% tab title="Swift" sync="swift" %} + ```swift + if let config = AdjustAdobeExtensionConfig(environment: ADJEnvironmentSandbox) { + config.setDeeplinkResponseBlock { deepLink in + // Deep link response received + // Apply your logic to determine whether the Adjust SDK should try to open the deep link + return true; + // or + // return false; + } + AdjustAdobeExtension.setConfiguration(config) + } + ``` + {% /tab %} + + {% tab title="Objective-C" sync="objc" %} + ```objc + AdjustAdobeExtensionConfig *config = [AdjustAdobeExtensionConfig configWithEnvironment:ADJEnvironmentSandbox]; + [config setDeeplinkResponseBlock:^BOOL(NSURL * _Nullable deeplink) { + // Deep link response received + // Apply your logic to determine whether the Adjust SDK should try to open the deep link + return YES; + // or + // return NO; + }]; + [AdjustAdobeExtension setConfiguration:config]; + ``` + {% /tab %} + {% /tabs %} + + SDK v3에서는 `setDeeplinkResponseBlock` 메서드의 이름이 `setDeferredDeeplinkReceivedBlock`으로 변경되었습니다. + + {% tabs %} + {% tab title="Swift" sync="swift" %} + ```swift + if let config = AdjustAdobeExtensionConfig(environment: ADJEnvironmentSandbox) { + config.setDeferredDeeplinkReceivedBlock { (deeplink: URL?) -> Bool in + if let deeplinkString = deeplink?.absoluteString.lowercased(), + deeplinkString.contains("no_open") { + return false + } + return true + } + AdjustAdobeExtension.setConfiguration(config) + } + ``` + {% /tab %} + + {% tab title="Objective-C" sync="objc" %} + ```objc + AdjustAdobeExtensionConfig *config = [AdjustAdobeExtensionConfig configWithEnvironment:ADJEnvironmentSandbox]; + [config setDeferredDeeplinkReceivedBlock:^BOOL(NSURL * _Nullable deeplink) { + if (deeplink && [[deeplink.absoluteString lowercaseString] containsString:@"no_open"]) { + return NO; + } + return YES; + }]; + [AdjustAdobeExtension setConfiguration:config]; + ``` + {% /tab %} + {% /tabs %} + + [디퍼드 딥링크 콜백 처리](/ko/sdk/adobe-extension/ios/deep-linking#deferred-deep-link-callbacks) 방법을 알아보시기 바랍니다. + + + + + diff --git a/src/content/docs/zh/sdk/migration/adobe-extension/ios/index.mdoc b/src/content/docs/zh/sdk/migration/adobe-extension/ios/index.mdoc new file mode 100644 index 000000000..bb5e40093 --- /dev/null +++ b/src/content/docs/zh/sdk/migration/adobe-extension/ios/index.mdoc @@ -0,0 +1,359 @@ +--- +title: iOS Adobe Extension v3 迁移指南 +description: 按照本指南说明操作,从 v2 迁移至 v3 +sidebar-label: iOS v3 迁移指南 +sidebar-position: 1 +--- + +[针对 Adobe Experience SDK 的 Adjust Extension](https://github.com/adjust/ios_adobe_extension) 已更新至版本 v3。该版本加入了针对 Adjust请按照本指南说明操作,从 v2 迁移至 v3。 + +{% callout type="important" %} +请在迁移前更新您的应用,以支持 iOS 12 以及更高版本系统。 +{% /callout %} + +要使用 Swift Package Manager 安装针对 Adobe Experience SDK 的 Adjust Extension 版本 v3,请输入下列 URL: + +```txt +https://github.com/adjust/ios_adobe_extension.git +``` + +如果您使用的是 CocoaPods,请添加下行到您的 `Podfile`: + +{% codeblock title="Podfile" showLineNumbers=false %} +```rb +pod 'AdjustAdobeExtension' +``` +{% /codeblock %} + +要查看针对 Adobe Experience SDK 的 Adjust Extension 设置完整指南,请参阅[集成指南](/zh/sdk/adobe-extension/ios/integration)。 + +新 API {% #new-apis %} + +--- + +{% minorversion added="v3" size="large" /%} + +版本 v3 中添加了下列 API。 + +### 解析品牌化短链接 {% #resolve-short-branded-links %} + +针对 Adobe Experience SDK 的 Adjust Extension 版本 v3 加入了[品牌化短链接](https://help.adjust.com/zh/article/short-branded-links)的解析支持。要解析短链接,请使用下列参数调用 `Adjust.processAndResolveDeeplink` 方法: + +{% deflist %} +`deeplink`: `NSURL` + +: 打开应用的深度链接。 + +`withCompletionHandler`: `ADJResolvedDeeplinkBlock` + +: 以参数形式接收已解析短链接的 completion 函数。 +{% /deflist %} + +{% tabs %}{% tab title="Swift" sync="swift" /%}{% /tabs %} + + +```swift +func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { + if userActivity.activityType == NSUserActivityTypeBrowsingWeb { + if let incomingUrl = userActivity.webpageUrl { + if let deeplink = ADJDeeplink(deeplink: incomingUrl) { + Adjust.processAndResolveDeeplink(deeplink) { resolveDeeplink in + print("[\(resolveDeeplink)]") + } + } + } + } + return true +} +``` + +{% tab /%} + +{% tab title="Objective-C" sync="objc" %} +```objc +- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray> * _Nullable))restorationHandler { + if ([[userActivity activityType] isEqualToString:NSUserActivityTypeBrowsingWeb]) { + ADJDeeplink *deeplink = [[ADJDeeplink alloc] initWithDeeplink:[userActivity webpageURL]]; + [Adjust processAndResolveDeeplink:deeplink + withCompletionHandler:^(NSString * _Nullable resolvedLink) { + NSLog(@"[%@]", resolvedLink); + }]; + } + return YES; +} +``` +{% /tab %} + +{% tabs /%} + +### 统一回传参数{% #global-callback-parameters %} + +针对 Adobe Experience SDK 的 Adjust Extension 版本 v3 加入了对来自 iOS SDK v5 的统一回传参数 API 支持。要向会话添加统一回传,请使用下列参数调用 `Adjust.addGlobalCallbackParameter`: + +{% deflist %} +`key`: `NSString` + +: 参数的键。 + +`value`: `NSString` + +: 参数值。 +{% /deflist %} + +{% tabs %}{% tab title="Swift" sync="swift" /%}{% /tabs %} + + +```swift +Adjust.addGlobalCallbackParameter("value", forKey: "key") +Adjust.addGlobalCallbackParameter("855", forKey: "user_id") +``` + +{% tab /%} + +{% tab title="Objective-C" sync="objc" %} +```objc +[Adjust addGlobalCallbackParameter:@"value" forKey:@"key"]; +[Adjust addGlobalCallbackParameter:@"855" forKey:@"user_id"]; +``` +{% /tab %} + +{% tabs /%} + +了解[统一回传设置方法](/zh/sdk/adobe-extension/ios/global-parameters#global-callback-parameters)。 + +### 统一合作伙伴参数{% #global-partner-parameters %} + +针对 Adobe Experience SDK 的 Adjust Extension 版本 v3 加入了对来自 iOS SDK v5 的全局合作伙伴参数 API 支持。要添加全局合作伙伴参数,请使用下列参数调用 `Adjust.addGlobalPartnerParameter`方法: + +{% deflist %} +`key`: `String` + +: 参数的键。 + +`value`: `String` + +: 参数值。 +{% /deflist %} + +{% tabs %}{% tab title="Swift" sync="swift" /%}{% /tabs %} + + +```swift +Adjust.addGlobalPartnerParameter("value", forKey: "key") +Adjust.addGlobalPartnerParameter("855", forKey: "user_id") +``` + +{% tab /%} + +{% tab title="Objective-C" sync="objc" %} +```objc +[Adjust addGlobalPartnerParameter:@"value" forKey:@"key"]; +[Adjust addGlobalPartnerParameter:@"855" forKey:@"user_id"]; +``` +{% /tab %} + +{% tabs /%} + +了解[全局合作伙伴参数设置方法](/zh/sdk/adobe-extension/ios/global-parameters#global-partner-parameters)。 + +### 设置外部设备 ID {% #set-external-device-id %} + +针对 Adobe Experience SDK 的 Adjust Extension 版本 v3 加入了[外部设备标识符](https://help.adjust.com/zh/article/external-device-identifiers)设置的支持。要设置外部设备 ID,请使用下列参数调用 `AdjustAdobeExtensionConfig` 实例上的 `setExternalDeviceId` 方法: + +{% deflist %} +`externalDeviceId`: `NSString` + +: 您的外部设备标识符。 +{% /deflist %} + +{% tabs %}{% tab title="Swift" sync="swift" /%}{% /tabs %} + + +```swift +if let config = AdjustAdobeExtensionConfig(environment: ADJEnvironmentSandbox) { + config.setExternalDeviceId("{% $variables.config.externalDeviceId %}") + AdjustAdobeExtension.setConfiguration(config) +} +``` + +{% tab /%} + +{% tab title="Objective-C" sync="objc" %} +```objc +AdjustAdobeExtensionConfig *config = [AdjustAdobeExtensionConfig configWithEnvironment:ADJEnvironmentSandbox]; +[config setExternalDeviceId:@"{% $variables.config.externalDeviceId %}"]; +[AdjustAdobeExtension setConfiguration:config]; +``` +{% /tab %} + +{% tabs /%} + +了解[外部设备 ID 配置方法](/zh/sdk/adobe-extension/ios/external-device-id)。 + +### 为预安装应用设置默认链接识别码 {% #set-default-link-token-preinstalled-apps %} + +针对 Adobe Experience SDK 的 Adjust Extension 版本 v3 拓展了支持功能,现在允许您设置默认[链接识别码](https://help.adjust.com/zh/article/links),以便将预安装应用的安装记录到默认推广活动中。要设置默认链接识别码,请使用下列参数调用 `AdjustAdobeExtensionConfig` 实例上的 `setDefaultTracker` 方法: + +{% deflist %} +`defaultTracker`: `NSString` + +: 预安装推广活动的、由英文字母和数字组成的链接识别码 +{% /deflist %} + +{% tabs %}{% tab title="Swift" sync="swift" /%}{% /tabs %} + + +```swift +if let config = AdjustAdobeExtensionConfig(environment: ADJEnvironmentSandbox) { + config.setDefaultTracker("abc123") + AdjustAdobeExtension.setConfiguration(config) +} +``` + +{% tab /%} + +{% tab title="Objective-C" sync="objc" %} +```objc +AdjustAdobeExtensionConfig *config = [AdjustAdobeExtensionConfig configWithEnvironment:ADJEnvironmentSandbox]; +[config setDefaultTracker:@"abc123"]; +[AdjustAdobeExtension setConfiguration:config]; +``` +{% /tab %} + +{% tabs /%} + +了解[发送预安装应用活动信息的方法](/zh/sdk/adobe-extension/ios/preinstalled)。 + +变更 API {% #changed-apis %} + +--- + +{% minorversion changed="v3" size="large" /%} + +版本 v3 中的以下 API 发生了变更。 + +### 直接深度链接{% #direct-deep-linking %} + +在 SDK v2 中,您可将深度链接数据座位参数调用 `AdjustAdobeExtension.application` 方法,以此打开归因深度链接。 + +{% tabs %} +{% tab title="Swift" sync="swift" %} +```swift +func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool { + return AdjustAdobeExtension.application(app, open: url, options: options) +} +``` +{% /tab %} + +{% tab title="Objective-C" sync="objc" %} +```objc +- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options { + return [AdjustAdobeExtension application:app openURL:url options:options]; +} +``` +{% /tab %} +{% /tabs %} + +SDK v3 已更新,可以使用 Adjust iOS SDK 的 `processDeeplink` 方法。要打开直接深度链接,请按照下列步骤操作: + +1. 使用深度链接 URL 创建新的 `ADJDeeplink` 实例。 + +1. 将您的 `ADJDeeplink` 实例传递至 `Adjust.processDeeplink` 方法。 + + {% tabs %} + {% tab title="Swift" sync="swift" %} + ```swift + func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool { + if let deeplink = ADJDeeplink(deeplink: url) { + Adjust.processDeeplink(deeplink) + } + return true + } + ``` + {% /tab %} + + {% tab title="Objective-C" sync="objc" %} + ```objc + - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options { + [Adjust processDeeplink: [[ADJDeeplink alloc] initWithDeeplink:url]]; + return YES; + } + ``` + {% /tab %} + {% /tabs %} + + 了解如何[使用直接深度链接进行用户再归因](/zh/sdk/adobe-extension/ios/deep-linking#reattribute-users-with-direct-deep-links)。 + + ### 延迟深度链接回传 {% #deferred-deep-linking-callback %} + + 在 SDK v2 中,您可以对 SDK 进行配置,向 `AdjustAdobeExtensionConfig` 实例的 `setDeeplinkResponseBlock` 方法传递函数,以便在延迟深度链接被打开时启用回传函数。 + + {% tabs %} + {% tab title="Swift" sync="swift" %} + ```swift + if let config = AdjustAdobeExtensionConfig(environment: ADJEnvironmentSandbox) { + config.setDeeplinkResponseBlock { deepLink in + // Deep link response received + // Apply your logic to determine whether the Adjust SDK should try to open the deep link + return true; + // or + // return false; + } + AdjustAdobeExtension.setConfiguration(config) + } + ``` + {% /tab %} + + {% tab title="Objective-C" sync="objc" %} + ```objc + AdjustAdobeExtensionConfig *config = [AdjustAdobeExtensionConfig configWithEnvironment:ADJEnvironmentSandbox]; + [config setDeeplinkResponseBlock:^BOOL(NSURL * _Nullable deeplink) { + // Deep link response received + // Apply your logic to determine whether the Adjust SDK should try to open the deep link + return YES; + // or + // return NO; + }]; + [AdjustAdobeExtension setConfiguration:config]; + ``` + {% /tab %} + {% /tabs %} + + 在 SDK v5 中,`setDeeplinkResponseBlock` 方法已重命名为 `setDeferredDeeplinkReceivedBlock`。 + + {% tabs %} + {% tab title="Swift" sync="swift" %} + ```swift + if let config = AdjustAdobeExtensionConfig(environment: ADJEnvironmentSandbox) { + config.setDeferredDeeplinkReceivedBlock { (deeplink: URL?) -> Bool in + if let deeplinkString = deeplink?.absoluteString.lowercased(), + deeplinkString.contains("no_open") { + return false + } + return true + } + AdjustAdobeExtension.setConfiguration(config) + } + ``` + {% /tab %} + + {% tab title="Objective-C" sync="objc" %} + ```objc + AdjustAdobeExtensionConfig *config = [AdjustAdobeExtensionConfig configWithEnvironment:ADJEnvironmentSandbox]; + [config setDeferredDeeplinkReceivedBlock:^BOOL(NSURL * _Nullable deeplink) { + if (deeplink && [[deeplink.absoluteString lowercaseString] containsString:@"no_open"]) { + return NO; + } + return YES; + }]; + [AdjustAdobeExtension setConfiguration:config]; + ``` + {% /tab %} + {% /tabs %} + + 学习如何[使用延迟深度链接回传](/zh/sdk/adobe-extension/ios/deep-linking#deferred-deep-link-callbacks) + + + + +