iOS Private Relayとのディファードディープリンク
iOS 15のリリースに伴い、Apple は iCloud+ユーザーにプライベートリレーという機能を提供しています。
この機能は、ユーザーのWebブラウジングのトラフィックを暗号化し、正確な位置情報、IPアドレス、ブラウジングのトラフィックの内容を隠すオプションを提供します。
ユーザーがプライベートリレーを選択した場合、アトリビューションやディファードディープリンクに支障をきたす可能性があります。
つまり、アプリを持たない新規ユーザーがApp Storeにアクセスし、アプリをインストールして起動すると、プライベートリレーによってアプリ内の特定のページにディープリンクされない可能性があります。
ディファードディープリンク(DDL)が引き続き期待通りに動作するように、以下のAppsFlyerソリューションのいずれかを導入する必要があります。
- [推奨] App Clipベースのソリューション:ユーザーのアトリビューションデータを提供するApp Clipを作成し、DDLに実現させたいものと同様の、カスタマイズされたApp Clipエクスペリエンスにユーザーを誘導します。App Clipには、ユーザーをアプリクリップからフルアプリに誘導するフローを含めることもできます。
- クリップボードを使ったソリューション:URLからディファードディープリンクデータをコピーし、ユーザーをアプリに正しくリダイレクトするWebランディングページを作成します。注記:このソリューションでは、アトリビューションはできません。
App Clipベースのソリューション
前提条件:AppsFlyer SDK V6.4.0以降
App ClipベースのDDLソリューションを設定する方法:
- Appleの手順に従って希望のユーザージャーニーを提供するApp Clipを開発してください。
- App Clipから完全なアプリまでの計測を含むApp Clip向けのAppsFlyer SDKを実装してください。
- In the App Clip
sceneDelegate
:- Replace
scene
continue userActivity
with the following function:
- Replace
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
// Must for AppsFlyer attrib
AppsFlyerLib.shared().continue(userActivity, restorationHandler: nil)
//Get the invocation URL from the userActivity in order to add it to the shared user default
guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
let invocationURL = userActivity.webpageURL else {
return
}
addDlUrlToSharedUserDefaults(invocationURL)
}
⇲ Github リンク:Swift
- 次のメソッドを追加してください:
func addDlUrlToSharedUserDefaults(_ url: URL){
guard let sharedUserDefaults = UserDefaults(suiteName: "group.<your_app>.appClipToFullApp") else {
return
}
//Add invocation URL to the app group
sharedUserDefaults.set(url, forKey: "dl_url")
//Enable sending events
sharedUserDefaults.set(true, forKey: "AppsFlyerReadyToSendEvents")
}
⇲ Github リンク:Swift
- 完全なアプリにて:
- In
appDelegate
, add the following method:
- In
func deepLinkFromAppClip() {
guard let sharedUserDefaults = UserDefaults(suiteName: "group.<your_app>.appClipToFullApp"),
let dlUrl = sharedUserDefaults.url(forKey: "dl_url")
else {
NSLog("Could not find the App Group or the deep link URL from the app clip")
return
}
AppsFlyerLib.shared().performOnAppAttribution(with: dlUrl)
sharedUserDefaults.removeObject(forKey: "dl_url")
}
⇲ Github リンク:Swift
- At the end of the
application didFinishLaunchingWithOptions launchOptions
method, calldeepLinkFromAppClip
:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// ...
deepLinkFromAppClip()
return true
}
⇲ Github リンク:Swift
クリップボードベースのソリューション
クリップボードベースのDDLソリューションを設定する方法:
- Enter the following code in
appDelegate
.
NSString *pasteboardUrl = [[UIPasteboard generalPasteboard] string];
NSString *checkParameter = @"cp_url=true";
if ([pasteboardUrl containsString:checkParameter]) {
[[AppsFlyerLib shared] performOnAppAttributionWithURL:[NSURL URLWithString:pasteboardUrl]];
}
var pasteboardUrl = UIPasteboard.general.string ?? ""
let checkParameter = "cp_url=true"
if pasteboardUrl.contains(checkParameter) {
AppsFlyerLib.shared().performOnAppAttribution(with: URL(string: pasteboardUrl))
}
- クリップボードからURLのディファードディープリンクを貼り付けるコードを実装してください。これは、AppsFlyer SDKの一部ではありません。
更新済 11か月前