{"id":31035566,"url":"https://github.com/appsflyersdk/appsflyer-apple-migration-helper","last_synced_at":"2025-09-14T03:43:08.317Z","repository":{"id":304606157,"uuid":"937493789","full_name":"AppsFlyerSDK/appsflyer-apple-migration-helper","owner":"AppsFlyerSDK","description":"The AppsFlyerMigrationHelper Module collects attribution and deep linking data given by the developer.","archived":false,"fork":false,"pushed_at":"2025-07-29T13:04:28.000Z","size":209,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-22T10:17:49.522Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Objective-C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AppsFlyerSDK.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-02-23T07:26:43.000Z","updated_at":"2025-07-29T13:04:33.000Z","dependencies_parsed_at":"2025-07-14T08:22:35.881Z","dependency_job_id":"acbd5fea-f89b-415e-ab25-a0da67b90f75","html_url":"https://github.com/AppsFlyerSDK/appsflyer-apple-migration-helper","commit_stats":null,"previous_names":["appsflyersdk/appsflyermigrationhelper"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/AppsFlyerSDK/appsflyer-apple-migration-helper","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AppsFlyerSDK%2Fappsflyer-apple-migration-helper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AppsFlyerSDK%2Fappsflyer-apple-migration-helper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AppsFlyerSDK%2Fappsflyer-apple-migration-helper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AppsFlyerSDK%2Fappsflyer-apple-migration-helper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AppsFlyerSDK","download_url":"https://codeload.github.com/AppsFlyerSDK/appsflyer-apple-migration-helper/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AppsFlyerSDK%2Fappsflyer-apple-migration-helper/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275058581,"owners_count":25398173,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-14T02:00:10.474Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-09-14T03:43:04.176Z","updated_at":"2025-09-14T03:43:08.308Z","avatar_url":"https://github.com/AppsFlyerSDK.png","language":"Objective-C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"https://massets.appsflyer.com/wp-content/uploads/2018/06/20092440/static-ziv_1TP.png\"  width=\"400\" \u003e \n\n# iOS Migration Helper\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/AppsFlyerSDK/AppsFlyerMigrationHelper/blob/main/LICENSE)\n\n🛠 In order for us to provide optimal support, we would kindly ask you to submit any issues to\nsupport@appsflyer.com\n\n\u003e *When submitting an issue please specify your AppsFlyer sign-up (account) email , your app ID , production steps, logs, code snippets and any additional relevant information.\n\n## Table Of Content\n  * [This Module is Built for](#plugin-build-for)\n  * [Adding The Migration Helper To Your Project](#install-connector)\n    + [Cocoapods](#cocoapods)\n    + [Carthage](#carthage)\n    + [SPM](#spm)\n  * [Basic Integration Of The Helper tool](#basic-integration)\n    + [Set Attribution parameters](#set-attribution-parameters)\n    + [Set DeepLink parameters](#set-deeplink-parameters)\n\n\n## \u003ca id=\"plugin-build-for\"\u003e This Module is Built for\n- AppsFlyer SDK:\n\t•\t6.16.2+\n- Minimum iOS Version: 12\n\n\n## \u003ca id=\"cocoapods\"\u003e  Adding The Migration Helper To Your Project via Cocoapods: \nAdd to your Podfile and run `pod install`:\n```\n// for statically linked dependency\npod 'AppsFlyerMigrationHelper'\n```\n\n\n## \u003ca id=\"carthage\"\u003e  Adding The Connector To Your Project via Carthage: \nGo to the `Carthage` folder in the root of the repository. Open `AppsFlyerMigrationHelper-dynamic.json`, click raw, copy and paste the URL of the file to your `Cartfile`: \n```\nbinary \"https://raw.githubusercontent.com/AppsFlyerSDK/appsflyer-apple-migration-helper/main/Carthage/AppsFlyerMigrationHelper-dynamic.json\" == BIINARY_VERSION\n```\nThen open project folder in the terminal and use command `carthage update --use-xcframeworks`, then, drag and drop AppsFlyerMigrationHelper.xcframework binary (from Carthage/Build/iOS folder).\n\nMore reference on Carthage binary artifacts integration [here](https://github.com/Carthage/Carthage/blob/master/Documentation/Artifacts.md).\n\n## \u003ca id=\"spm\"\u003e  Adding The Connector To Your Project via SPM: \nTo integrate the AppsFlyer Apple Migration Helper via Swift Package Manager (SPM):\n\n1. In Xcode, go to File \u003e Swift Packages \u003e Add Package Dependency.\n\n2. Enter the repository URL:\n```\nhttps://github.com/AppsFlyerSDK/appsflyer-apple-migration-helper\n```\n\n3. Choose the desired version or branch.\n\n4. Select your project’s target and click Finish.\n\n\n## \u003ca id=\"basic-integration\"\u003e Basic Integration Of The AppsFlyerMigrationHelper\n\n### \u003ca id=\"set-attribution-parameters\"\u003e Set Attribution Parameters for AppsFlyerMigrationHelper\n- Swift \n```swift\nimport AppsFlyerMigrationHelper\n...\nclass AppDelegate: UIResponder, UIApplicationDelegate {\n...\n    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -\u003e Bool {\n    ...\n        Branch.getInstance().lastAttributedTouchData(withAttributionWindow:\u003c#DAY\u003e) { (params, error) in\n            if let params = params {\n                AFMigrationHelper.shared.setAttributionData(params.lastAttributedTouchJSON, attributionWindow: params.attributionWindow)\n            }\n        }\n    ...\n    }\n}\n```\n\n### \u003ca id=\"set-deeplink-parameters\"\u003e Set Deeplink Parameters for AppsFlyerMigrationHelper\n- Swift \n```swift\nimport AppsFlyerMigrationHelper\n...\nclass AppDelegate: UIResponder, UIApplicationDelegate {\n...\n    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -\u003e Bool {\n    ...\n        Branch.getInstance().initSession(launchOptions: launchOptions) { (params, error) in\n            \n            NSLog(\"[Branch] initSession, deep link data:\")\n            print(params as? [String: AnyObject] ?? {})\n            // Access and use deep link data here (nav to page, display content, etc.)\n            if (params?[\"~referring_link\"] != nil){\n                AFMigrationHelper.shared.setDeeplinkData(params)\n            }\n        }\n    ...\n    }\n}    \n```\n\n\n## \u003ca id=\"example\"\u003e Full Code Examples\n\n### Swift Example \n```swift\nimport AppsFlyerLib\nimport AppsFlyerMigrationHelper\nimport BranchSDK\n\n@UIApplicationMain\nclass AppDelegate: UIResponder, UIApplicationDelegate {\n    var ConversionData: [AnyHashable: Any]? = nil\n    var window: UIWindow?\n    var deferred_deep_link_processed_flag:Bool = false\n\n    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -\u003e Bool {\n        \n        let isBranchSDKAvailable = NSClassFromString(\"Branch\") != nil\n\n        Branch.enableLogging()\n        \n        if #available(iOS 16.0, *) {\n                // Don't check pasteboard on install, instead utilize UIPasteControl\n            } else if #available(iOS 15.0, *) {\n                // Call `checkPasteboardOnInstall()` before Branch initialization\n                Branch.getInstance().checkPasteboardOnInstall()\n            }\n\n            // Check if pasteboard toast will show\n            if Branch.getInstance().willShowPasteboardToast(){\n                // You can notify the user of what just occurred here\n                NSLog(\"[Branch] willShowPasteboardToast ######\")\n          }\n\n        Branch.getInstance().initSession(launchOptions: launchOptions) { (params, error) in\n            \n            NSLog(\"[Branch] initSession, deep link data:\")\n            print(params as? [String: AnyObject] ?? {})\n            // Access and use deep link data here (nav to page, display content, etc.)\n            if (params?[\"~referring_link\"] != nil){\n                AFMigrationHelper.shared.setDeeplinkData(params)\n            }\n        }\n        \n        Branch.getInstance().lastAttributedTouchData(withAttributionWindow:0) { (params, error) in\n            if let params = params {\n                AFMigrationHelper.shared.setAttributionData(params.lastAttributedTouchJSON, attributionWindow: params.attributionWindow)\n            }\n        }\n        AppsFlyerLib.shared().appleAppID = \"\u003capple app ID\u003e\"\n        AppsFlyerLib.shared().appsFlyerDevKey = \"\u003cAppsflyer dev key\u003e\"\n        AppsFlyerLib.shared().isDebug = true\n        \n        NotificationCenter.default.addObserver(self, selector: #selector(didBecomeActiveNotification),\n                name: UIApplication.didBecomeActiveNotification,\n                object: nil)\n        \n        return true\n    }\n    \n    @objc func didBecomeActiveNotification() {\n        // No Listener\n        AppsFlyerLib.shared().start()\n        \n    }\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fappsflyersdk%2Fappsflyer-apple-migration-helper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fappsflyersdk%2Fappsflyer-apple-migration-helper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fappsflyersdk%2Fappsflyer-apple-migration-helper/lists"}