{"componentChunkName":"component---src-templates-markdown-template-jsx","path":"/developers/client-sdks/ios/upgrade-to-version-9/","result":{"data":{"pageMetadata":{"title":"Upgrade to Version 9","path":"/developers/client-sdks/ios/upgrade-to-version-9/","sourceCode":null,"metadataParent":{"title":"iOS","path":"/developers/client-sdks/ios/","sourceCode":"https://github.com/mParticle/mparticle-apple-sdk","hasVersionPicker":null,"metadataChildren":[{"title":"Initialization","path":"/developers/client-sdks/ios/initialization/","order":2,"label":null},{"title":"Configuration","path":"/developers/client-sdks/ios/configuration/","order":3,"label":null},{"title":"Event Tracking","path":"/developers/client-sdks/ios/event-tracking/","order":4,"label":null},{"title":"User Attributes","path":"/developers/client-sdks/ios/users/","order":5,"label":null},{"title":"IDSync","path":"/developers/client-sdks/ios/idsync/","order":6,"label":null},{"title":"Screen Tracking","path":"/developers/client-sdks/ios/screen-tracking/","order":7,"label":null},{"title":"Commerce Events","path":"/developers/client-sdks/ios/commerce-tracking/","order":8,"label":null},{"title":"Location Tracking","path":"/developers/client-sdks/ios/location/","order":9,"label":null},{"title":"Media","path":"/developers/client-sdks/ios/media/","order":10,"label":null},{"title":"Kits","path":"/developers/client-sdks/ios/kits/","order":11,"label":null},{"title":"Application State and Session Management","path":"/developers/client-sdks/ios/session-management/","order":12,"label":null},{"title":"Data Privacy Controls","path":"/developers/client-sdks/ios/data-privacy-controls/","order":13,"label":null},{"title":"Error Tracking","path":"/developers/client-sdks/ios/error-and-exception-tracking/","order":14,"label":null},{"title":"Opt Out","path":"/developers/client-sdks/ios/opt-out/","order":14,"label":null},{"title":"Push Notifications","path":"/developers/client-sdks/ios/push-notifications/","order":15,"label":null},{"title":"Webview Integration","path":"/developers/client-sdks/ios/webview-integration/","order":16,"label":null},{"title":"Upload Frequency","path":"/developers/client-sdks/ios/upload-frequency/","order":17,"label":null},{"title":"Preventing Blocked HTTP Traffic with CNAME","path":"/developers/client-sdks/ios/prevent-blocked-http-traffic/","order":19,"label":null},{"title":"Linting Data Plans","path":"/developers/client-sdks/ios/linting/","order":20,"label":null},{"title":"Troubleshooting iOS SDK","path":"/developers/client-sdks/ios/troubleshooting/","order":21,"label":null},{"title":"Social Networks","path":"/developers/client-sdks/ios/social-networks/","order":22,"label":null},{"title":"iOS 14 Guide","path":"/developers/client-sdks/ios/ios14/","order":23,"label":null},{"title":"iOS 15 FAQ","path":"/developers/client-sdks/ios/ios15/","order":24,"label":null},{"title":"iOS 16 FAQ","path":"/developers/client-sdks/ios/ios16/","order":25,"label":null},{"title":"iOS 17 FAQ","path":"/developers/client-sdks/ios/ios17/","order":26,"label":null},{"title":"iOS 18 FAQ","path":"/developers/client-sdks/ios/ios18/","order":27,"label":null},{"title":"API Reference","path":"/developers/client-sdks/ios/api-reference/","order":28,"label":null},{"title":"Upgrade to Version 7","path":"/developers/client-sdks/ios/upgrade-to-version-7/","order":29,"label":null},{"title":"Upgrade to Version 9","path":"/developers/client-sdks/ios/upgrade-to-version-9/","order":30,"label":null},{"title":null,"path":"/developers/client-sdks/ios/changelog/","order":null,"label":null},{"title":"Workspace Switching","path":"/developers/client-sdks/ios/workspace-switching-and-multi-instance-support/","order":null,"label":null}],"metadataParent":{"title":"Client SDKs","path":"/developers/client-sdks/","metadataChildren":[{"title":"Alexa","path":"/developers/client-sdks/alexa/","order":1,"label":null},{"title":"AMP","path":"/developers/client-sdks/amp/","order":null,"label":null},{"title":"Android","path":"/developers/client-sdks/android/","order":null,"label":null},{"title":"Cordova","path":"/developers/client-sdks/cordova/","order":null,"label":null},{"title":"Direct Url Routing","path":"/developers/client-sdks/direct-url-routing/","order":null,"label":null},{"title":"Flutter","path":"/developers/client-sdks/flutter/","order":null,"label":null},{"title":"iOS","path":"/developers/client-sdks/ios/","order":null,"label":null},{"title":"React Native","path":"/developers/client-sdks/react-native/","order":null,"label":null},{"title":"Roku","path":"/developers/client-sdks/roku/","order":null,"label":null},{"title":"Unity","path":"/developers/client-sdks/unity/","order":null,"label":null},{"title":"Web","path":"/developers/client-sdks/web/","order":null,"label":null},{"title":"Xamarin","path":"/developers/client-sdks/xamarin/","order":null,"label":null},{"title":"Xbox","path":"/developers/client-sdks/uwp/","order":null,"label":null}],"metadataParent":{"title":"Developers","path":"/developers/","metadataChildren":[{"title":"API Credential Management","path":"/developers/credential-management/","order":null,"label":null},{"title":"API References","path":"/developers/apis/","order":null,"label":null},{"title":"Client SDKs","path":"/developers/client-sdks/","order":null,"label":null},{"title":"Guides","path":"/developers/guides/","order":null,"label":null},{"title":"Media SDKs","path":"/developers/media-sdks/","order":null,"label":null},{"title":"Quickstart","path":"/developers/quickstart/","order":null,"label":null},{"title":"Server SDKs","path":"/developers/server-sdks/","order":null,"label":null},{"title":"The Developer's Guided Journey to mParticle","path":"/developers/developersjourney/","order":null,"label":null},{"title":"Tools","path":"/developers/tools/","order":null,"label":null}],"metadataParent":null}}}},"markdownRemark":{"html":"<p>Version 9 of the Apple SDK contains breaking changes from version 8.x, including removal of the AppDelegateProxy (you must now forward push, URL, and user-activity events to the SDK), removal of deprecated <code class=\"language-text\">UIApplicationDelegate</code> URL/activity methods in favor of the UIScene lifecycle, removal of location support and the NoLocation variant, removal of support for iOS app extension targets, removal of Carthage distribution (use Swift Package Manager or CocoaPods instead), direct routing to regional endpoints by default, and API changes for MPRokt and listener callbacks. The SDK’s minimum deployment is <strong>iOS 15</strong> and <strong>tvOS 15</strong>. This guide covers migration from versions &#x3C; 9.0.0. For migration from SDK 7.x to 8.x, see the <a href=\"https://github.com/mParticle/mparticle-apple-sdk/blob/main/migration-guide-v8.md\">mParticle Apple SDK migration guide v8</a> on GitHub.</p>\n<h2 id=\"imports-swift-objective-c-and-rokt\" style=\"position:relative;\"><a href=\"#imports-swift-objective-c-and-rokt\" aria-label=\"imports swift objective c and rokt permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>Imports (Swift, Objective-C, and Rokt)</h2>\n<p><strong>Swift:</strong> Use <code class=\"language-text\">import mParticle_Apple_SDK</code> for all public SDK APIs, including Rokt types (such as <code class=\"language-text\">RoktEvent</code>) that the kit re-exports. You do <strong>not</strong> need a separate <code class=\"language-text\">import RoktContracts</code> in Swift for typical mParticle + Rokt usage.</p>\n<p><strong>Objective-C:</strong> Prefer <code class=\"language-text\">#import &lt;mParticle_Apple_SDK.h&gt;</code>, or <code class=\"language-text\">@import mParticle_Apple_SDK;</code> when modules are enabled. If a source file references Rokt SDK types directly (for example in blocks that take <code class=\"language-text\">RoktEvent *</code>), add <code class=\"language-text\">@import RoktContracts;</code> (or the equivalent for your build) in that file only.</p>\n<p><strong>Swift Package Manager:</strong> Depend on the single product <strong><code class=\"language-text\">mParticle-Apple-SDK</code></strong>; the old <strong><code class=\"language-text\">mParticle-Apple-SDK-NoLocation</code></strong> product name is no longer used (see <a href=\"#removed-location-support\">Removed Location Support</a>).</p>\n<h2 id=\"removed-appdelegateproxy\" style=\"position:relative;\"><a href=\"#removed-appdelegateproxy\" aria-label=\"removed appdelegateproxy permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>Removed AppDelegateProxy</h2>\n<p>The <code class=\"language-text\">AppDelegateProxy</code> feature has been removed from the SDK. The SDK no longer automatically intercepts <code class=\"language-text\">UIApplicationDelegate</code> messages for push notifications, URL opening, or user activity. You must explicitly forward these events to the SDK from your app delegate or scene delegate.</p>\n<h3 id=\"what-has-changed\" style=\"position:relative;\"><a href=\"#what-has-changed\" aria-label=\"what has changed permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>What Has Changed</h3>\n<ul>\n<li>The <code class=\"language-text\">proxyAppDelegate</code> property has been removed from <code class=\"language-text\">MParticleOptions</code></li>\n<li>The <code class=\"language-text\">proxiedAppDelegate</code> property has been removed from <code class=\"language-text\">MParticle</code></li>\n<li>The <code class=\"language-text\">MPAppDelegateProxy</code> and <code class=\"language-text\">MPSurrogateAppDelegate</code> classes have been removed</li>\n</ul>\n<h3 id=\"migration-steps\" style=\"position:relative;\"><a href=\"#migration-steps\" aria-label=\"migration steps permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>Migration Steps</h3>\n<p>If you were using <code class=\"language-text\">proxyAppDelegate = YES</code> (the default), you must now forward app delegate events to the SDK. See <a href=\"/developers/client-sdks/ios/push-notifications/\">Push Notifications</a> and <a href=\"/developers/client-sdks/ios/configuration/#forwarding-app-lifecycle-events-sdk-90\">Configuration – Forwarding app lifecycle events</a> for the required code.</p>\n<ul>\n<li>Remove any references to <code class=\"language-text\">proxyAppDelegate</code> from your <code class=\"language-text\">MParticleOptions</code> configuration</li>\n<li>Remove any references to <code class=\"language-text\">proxiedAppDelegate</code> property checks</li>\n</ul>\n<hr>\n<h2 id=\"removed-legacy-database-migration-support\" style=\"position:relative;\"><a href=\"#removed-legacy-database-migration-support\" aria-label=\"removed legacy database migration support permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>Removed Legacy Database Migration Support</h2>\n<p>Support for migrating from SDK versions <strong>prior to 8.27.0</strong> (internal database version &#x3C; 30) has been removed. Only migration from the immediately preceding database version (v30 → v31) is supported.</p>\n<h3 id=\"what-this-means\" style=\"position:relative;\"><a href=\"#what-this-means\" aria-label=\"what this means permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>What This Means</h3>\n<ul>\n<li>Apps upgrading from <strong>8.26.x or earlier</strong> to SDK 9.x will start with a fresh local database</li>\n<li>Any pending (unsent) events from the old SDK version will be lost during the upgrade</li>\n<li>User identity and session data will be re-established after the upgrade</li>\n</ul>\n<p>This only affects apps that are upgrading directly from mParticle SDK versions <strong>before 8.27.0</strong> (released August 2024) and that have pending events not yet uploaded to mParticle.</p>\n<hr>\n<h2 id=\"removed-mplistenercontroller\" style=\"position:relative;\"><a href=\"#removed-mplistenercontroller\" aria-label=\"removed mplistenercontroller permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>Removed MPListenerController</h2>\n<p>The <code class=\"language-text\">MPListenerController</code> class has been removed. The SDK no longer invokes any listener callbacks.</p>\n<hr>\n<h2 id=\"app-extension-targets\" style=\"position:relative;\"><a href=\"#app-extension-targets\" aria-label=\"app extension targets permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>App extension targets</h2>\n<p>The mParticle Apple SDK <strong>9.x</strong> does not support iOS app extension targets. If you need the SDK in an extension, you can continue using <strong>8.x</strong>. If you require continued app extension support beyond that path, contact your mParticle representative.</p>\n<hr>\n<h2 id=\"removed-carthage-support\" style=\"position:relative;\"><a href=\"#removed-carthage-support\" aria-label=\"removed carthage support permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>Removed Carthage support</h2>\n<p>Carthage is no longer supported for the mParticle Apple SDK as of <strong>9.0.0</strong>. Integrate the SDK with <strong>Swift Package Manager</strong> or <strong>CocoaPods</strong>, or build <a href=\"https://github.com/mParticle/mparticle-apple-sdk/wiki/Manual-installation-instructions\">manually from source</a>. If you relied on Carthage with SDK 8.x, migrate your dependency to SPM or CocoaPods before upgrading.</p>\n<hr>\n<h2 id=\"direct-routing-enabled-by-default\" style=\"position:relative;\"><a href=\"#direct-routing-enabled-by-default\" aria-label=\"direct routing enabled by default permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>Direct Routing Enabled by Default</h2>\n<p>API requests now route directly to regional endpoints based on your API key prefix.</p>\n<p><strong>Before (8.x):</strong></p>\n<ul>\n<li><code class=\"language-text\">nativesdks.mparticle.com</code></li>\n<li><code class=\"language-text\">tracking-nativesdks.mparticle.com</code></li>\n<li><code class=\"language-text\">identity.mparticle.com</code></li>\n<li><code class=\"language-text\">tracking-identity.mparticle.com</code></li>\n<li><code class=\"language-text\">config2.mparticle.com</code></li>\n</ul>\n<p><strong>After (9.x):</strong></p>\n<ul>\n<li><code class=\"language-text\">nativesdks.[pod].mparticle.com</code></li>\n<li><code class=\"language-text\">tracking-nativesdks.[pod].mparticle.com</code></li>\n<li><code class=\"language-text\">identity.[pod].mparticle.com</code></li>\n<li><code class=\"language-text\">tracking-identity.[pod].mparticle.com</code></li>\n<li><code class=\"language-text\">config2.mparticle.com</code> (unchanged; used for SDK configuration)</li>\n</ul>\n<p>Examples by API key format:</p>\n<table>\n<thead>\n<tr>\n<th>API Key Format</th>\n<th>Events Endpoint</th>\n<th>Events Tracking Endpoint</th>\n<th>Identity Endpoint</th>\n<th>Identity Tracking Endpoint</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">xxxxx</code> (legacy, no prefix)</td>\n<td><code class=\"language-text\">nativesdks.us1.mparticle.com</code></td>\n<td><code class=\"language-text\">tracking-nativesdks.us1.mparticle.com</code></td>\n<td><code class=\"language-text\">identity.us1.mparticle.com</code></td>\n<td><code class=\"language-text\">tracking-identity.us1.mparticle.com</code></td>\n</tr>\n<tr>\n<td><code class=\"language-text\">us1-xxxxx</code></td>\n<td><code class=\"language-text\">nativesdks.us1.mparticle.com</code></td>\n<td><code class=\"language-text\">tracking-nativesdks.us1.mparticle.com</code></td>\n<td><code class=\"language-text\">identity.us1.mparticle.com</code></td>\n<td><code class=\"language-text\">tracking-identity.us1.mparticle.com</code></td>\n</tr>\n<tr>\n<td><code class=\"language-text\">us2-xxxxx</code></td>\n<td><code class=\"language-text\">nativesdks.us2.mparticle.com</code></td>\n<td><code class=\"language-text\">tracking-nativesdks.us2.mparticle.com</code></td>\n<td><code class=\"language-text\">identity.us2.mparticle.com</code></td>\n<td><code class=\"language-text\">tracking-identity.us2.mparticle.com</code></td>\n</tr>\n<tr>\n<td><code class=\"language-text\">eu1-xxxxx</code></td>\n<td><code class=\"language-text\">nativesdks.eu1.mparticle.com</code></td>\n<td><code class=\"language-text\">tracking-nativesdks.eu1.mparticle.com</code></td>\n<td><code class=\"language-text\">identity.eu1.mparticle.com</code></td>\n<td><code class=\"language-text\">tracking-identity.eu1.mparticle.com</code></td>\n</tr>\n<tr>\n<td><code class=\"language-text\">au1-xxxxx</code></td>\n<td><code class=\"language-text\">nativesdks.au1.mparticle.com</code></td>\n<td><code class=\"language-text\">tracking-nativesdks.au1.mparticle.com</code></td>\n<td><code class=\"language-text\">identity.au1.mparticle.com</code></td>\n<td><code class=\"language-text\">tracking-identity.au1.mparticle.com</code></td>\n</tr>\n</tbody>\n</table>\n<p>If your app has strict App Transport Security (ATS) settings, you may need to add <code class=\"language-text\">NSIncludesSubdomains</code> set to <code class=\"language-text\">YES</code> for the <code class=\"language-text\">mparticle.com</code> domain in your Info.plist to allow connections to regional subdomains.</p>\n<hr>\n<h2 id=\"removed-deprecated-uiapplicationdelegate-methods\" style=\"position:relative;\"><a href=\"#removed-deprecated-uiapplicationdelegate-methods\" aria-label=\"removed deprecated uiapplicationdelegate methods permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>Removed Deprecated UIApplicationDelegate Methods</h2>\n<p>Apple has deprecated several <code class=\"language-text\">UIApplicationDelegate</code> protocol methods in favor of the <code class=\"language-text\">UIScene</code> lifecycle. The mParticle SDK has removed its wrapper methods for these deprecated delegate methods. Use the <code class=\"language-text\">UIScene</code>-based APIs in your SceneDelegate instead. The SDK’s minimum deployment is iOS 15 and tvOS 15, so the UIScene lifecycle is always available.</p>\n<h3 id=\"what-has-changed-1\" style=\"position:relative;\"><a href=\"#what-has-changed-1\" aria-label=\"what has changed 1 permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>What Has Changed</h3>\n<p>The following methods have been removed from the <code class=\"language-text\">MParticle</code> class:</p>\n<ul>\n<li><code class=\"language-text\">openURL:sourceApplication:annotation:</code></li>\n<li><code class=\"language-text\">openURL:options:</code></li>\n<li><code class=\"language-text\">continueUserActivity:restorationHandler:</code></li>\n</ul>\n<h3 id=\"migration-steps-1\" style=\"position:relative;\"><a href=\"#migration-steps-1\" aria-label=\"migration steps 1 permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>Migration Steps</h3>\n<p>Use the <code class=\"language-text\">UIScene</code> lifecycle in your <strong>SceneDelegate</strong> and call the new SDK methods.</p>\n<p><strong>URL handling</strong> — use <code class=\"language-text\">handleURLContext:</code> in your SceneDelegate:</p>\n<div class=\"code-selector-block\"><input class=\"code-toggle-objectivec\" id=\"code-toggle-objectivec-46\" type=\"radio\" name=\"code-toggle-46\"checked=\"checked\" /><label for=\"code-toggle-objectivec-46\">Objective-C</label><input class=\"code-toggle-swift\" id=\"code-toggle-swift-46\" type=\"radio\" name=\"code-toggle-46\" /><label for=\"code-toggle-swift-46\">Swift</label>\n<div class=\"gatsby-highlight\" data-language=\"objectivec\"><pre style=\"counter-reset: linenumber NaN\" class=\"language-objectivec line-numbers\"><code class=\"language-objectivec\"><span class=\"token comment\">// In SceneDelegate</span>\n<span class=\"token operator\">-</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">void</span><span class=\"token punctuation\">)</span>scene<span class=\"token punctuation\">:</span><span class=\"token punctuation\">(</span>UIScene <span class=\"token operator\">*</span><span class=\"token punctuation\">)</span>scene openURLContexts<span class=\"token punctuation\">:</span><span class=\"token punctuation\">(</span>NSSet<span class=\"token operator\">&lt;</span>UIOpenURLContext <span class=\"token operator\">*</span><span class=\"token operator\">></span> <span class=\"token operator\">*</span><span class=\"token punctuation\">)</span>URLContexts <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span>UIOpenURLContext <span class=\"token operator\">*</span>urlContext <span class=\"token keyword\">in</span> URLContexts<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token punctuation\">[</span><span class=\"token punctuation\">[</span>MParticle sharedInstance<span class=\"token punctuation\">]</span> handleURLContext<span class=\"token punctuation\">:</span>urlContext<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code><span aria-hidden=\"true\" class=\"line-numbers-rows\" style=\"white-space: normal; width: auto; left: 0;\"><span></span><span></span><span></span><span></span><span></span><span></span></span></pre></div>\n<div class=\"gatsby-highlight\" data-language=\"swift\"><pre style=\"counter-reset: linenumber NaN\" class=\"language-swift line-numbers\"><code class=\"language-swift\"><span class=\"token comment\">// In SceneDelegate</span>\n<span class=\"token keyword\">func</span> <span class=\"token function\">scene</span><span class=\"token punctuation\">(</span><span class=\"token number\">_</span> scene<span class=\"token punctuation\">:</span> <span class=\"token builtin\">UIScene</span><span class=\"token punctuation\">,</span> openURLContexts <span class=\"token builtin\">URLContexts</span><span class=\"token punctuation\">:</span> <span class=\"token builtin\">Set</span><span class=\"token operator\">&lt;</span><span class=\"token builtin\">UIOpenURLContext</span><span class=\"token operator\">></span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">for</span> urlContext <span class=\"token keyword\">in</span> <span class=\"token builtin\">URLContexts</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token builtin\">MParticle</span><span class=\"token punctuation\">.</span><span class=\"token function\">sharedInstance</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">handleURLContext</span><span class=\"token punctuation\">(</span>urlContext<span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code><span aria-hidden=\"true\" class=\"line-numbers-rows\" style=\"white-space: normal; width: auto; left: 0;\"><span></span><span></span><span></span><span></span><span></span><span></span></span></pre></div>\n</div>\n<p><strong>User activity (universal links, Handoff)</strong> — use <code class=\"language-text\">handleUserActivity:</code> in your SceneDelegate:</p>\n<div class=\"code-selector-block\"><input class=\"code-toggle-objectivec\" id=\"code-toggle-objectivec-51\" type=\"radio\" name=\"code-toggle-51\"checked=\"checked\" /><label for=\"code-toggle-objectivec-51\">Objective-C</label><input class=\"code-toggle-swift\" id=\"code-toggle-swift-51\" type=\"radio\" name=\"code-toggle-51\" /><label for=\"code-toggle-swift-51\">Swift</label>\n<div class=\"gatsby-highlight\" data-language=\"objectivec\"><pre style=\"counter-reset: linenumber NaN\" class=\"language-objectivec line-numbers\"><code class=\"language-objectivec\"><span class=\"token comment\">// In SceneDelegate</span>\n<span class=\"token operator\">-</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">void</span><span class=\"token punctuation\">)</span>scene<span class=\"token punctuation\">:</span><span class=\"token punctuation\">(</span>UIScene <span class=\"token operator\">*</span><span class=\"token punctuation\">)</span>scene continueUserActivity<span class=\"token punctuation\">:</span><span class=\"token punctuation\">(</span>NSUserActivity <span class=\"token operator\">*</span><span class=\"token punctuation\">)</span>userActivity <span class=\"token punctuation\">{</span>\n    <span class=\"token punctuation\">[</span><span class=\"token punctuation\">[</span>MParticle sharedInstance<span class=\"token punctuation\">]</span> handleUserActivity<span class=\"token punctuation\">:</span>userActivity<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code><span aria-hidden=\"true\" class=\"line-numbers-rows\" style=\"white-space: normal; width: auto; left: 0;\"><span></span><span></span><span></span><span></span></span></pre></div>\n<div class=\"gatsby-highlight\" data-language=\"swift\"><pre style=\"counter-reset: linenumber NaN\" class=\"language-swift line-numbers\"><code class=\"language-swift\"><span class=\"token comment\">// In SceneDelegate</span>\n<span class=\"token keyword\">func</span> <span class=\"token function\">scene</span><span class=\"token punctuation\">(</span><span class=\"token number\">_</span> scene<span class=\"token punctuation\">:</span> <span class=\"token builtin\">UIScene</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">continue</span> userActivity<span class=\"token punctuation\">:</span> <span class=\"token builtin\">NSUserActivity</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token builtin\">MParticle</span><span class=\"token punctuation\">.</span><span class=\"token function\">sharedInstance</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">handleUserActivity</span><span class=\"token punctuation\">(</span>userActivity<span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">}</span></code><span aria-hidden=\"true\" class=\"line-numbers-rows\" style=\"white-space: normal; width: auto; left: 0;\"><span></span><span></span><span></span><span></span></span></pre></div>\n</div>\n<ul>\n<li>If you still use the <code class=\"language-text\">UIApplicationDelegate</code> lifecycle without scenes, consider migrating to the <code class=\"language-text\">UIScene</code> lifecycle as Apple continues to deprecate the older approach</li>\n</ul>\n<hr>\n<h2 id=\"removed-location-support\" style=\"position:relative;\"><a href=\"#removed-location-support\" aria-label=\"removed location support permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>Removed Location Support</h2>\n<p>In version 9.0.0, location support has been removed from the SDK. The SDK now provides a single target without location functionality.</p>\n<h3 id=\"what-has-changed-2\" style=\"position:relative;\"><a href=\"#what-has-changed-2\" aria-label=\"what has changed 2 permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>What Has Changed</h3>\n<ul>\n<li>Location-related functionality has been removed</li>\n<li>The SDK provides a single target (no separate Location or NoLocation variant)</li>\n<li>The target name is the standard name (e.g. <code class=\"language-text\">mParticle-Apple-SDK</code>); the <code class=\"language-text\">-NoLocation</code> product name has been removed</li>\n</ul>\n<h3 id=\"migration-steps-2\" style=\"position:relative;\"><a href=\"#migration-steps-2\" aria-label=\"migration steps 2 permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>Migration Steps</h3>\n<p><strong>If you were using a target with Location support:</strong><br>\nSwitch your project to the standard target (no Location suffix) and remove any location-related dependencies, imports, or build scripts.</p>\n<p><strong>If you were using the NoLocation variant</strong> (e.g. <code class=\"language-text\">mParticle-Apple-SDK-NoLocation</code>):</p>\n<ol>\n<li>Replace the <code class=\"language-text\">NoLocation</code> import/product with the standard name: <code class=\"language-text\">mParticle-Apple-SDK</code></li>\n<li>Update <code class=\"language-text\">Package.swift</code> or <code class=\"language-text\">Podfile</code> to use the standard target/product name</li>\n</ol>\n<p><strong>Swift Package Manager example:</strong></p>\n<div class=\"code-selector-block\"><div class=\"code-selector-block no-selector\">\n<div class=\"gatsby-highlight\" data-language=\"swift\"><pre style=\"counter-reset: linenumber NaN\" class=\"language-swift line-numbers\"><code class=\"language-swift\"><span class=\"token comment\">// Before (NoLocation variant)</span>\n<span class=\"token punctuation\">.</span><span class=\"token function\">target</span><span class=\"token punctuation\">(</span>\n    name<span class=\"token punctuation\">:</span> <span class=\"token string\">\"MyTarget\"</span><span class=\"token punctuation\">,</span>\n    dependencies<span class=\"token punctuation\">:</span> <span class=\"token punctuation\">[</span>\n        <span class=\"token punctuation\">.</span><span class=\"token function\">product</span><span class=\"token punctuation\">(</span>name<span class=\"token punctuation\">:</span> <span class=\"token string\">\"mParticle-Apple-SDK-NoLocation\"</span><span class=\"token punctuation\">,</span> package<span class=\"token punctuation\">:</span> <span class=\"token string\">\"mParticle-Apple-SDK\"</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">]</span>\n<span class=\"token punctuation\">)</span>\n\n<span class=\"token comment\">// After (standard target)</span>\n<span class=\"token punctuation\">.</span><span class=\"token function\">target</span><span class=\"token punctuation\">(</span>\n    name<span class=\"token punctuation\">:</span> <span class=\"token string\">\"MyTarget\"</span><span class=\"token punctuation\">,</span>\n    dependencies<span class=\"token punctuation\">:</span> <span class=\"token punctuation\">[</span>\n        <span class=\"token punctuation\">.</span><span class=\"token function\">product</span><span class=\"token punctuation\">(</span>name<span class=\"token punctuation\">:</span> <span class=\"token string\">\"mParticle-Apple-SDK\"</span><span class=\"token punctuation\">,</span> package<span class=\"token punctuation\">:</span> <span class=\"token string\">\"mParticle-Apple-SDK\"</span><span class=\"token punctuation\">)</span>\n    <span class=\"token punctuation\">]</span>\n<span class=\"token punctuation\">)</span></code><span aria-hidden=\"true\" class=\"line-numbers-rows\" style=\"white-space: normal; width: auto; left: 0;\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></pre></div>\n</div>\n<hr>\n<h2 id=\"mprokt-api-changes\" style=\"position:relative;\"><a href=\"#mprokt-api-changes\" aria-label=\"mprokt api changes permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>MPRokt API Changes</h2>\n<p>The <code class=\"language-text\">MPRokt</code> interface has been updated to align with the Rokt SDK 5.0.x API: multiple callback parameters are replaced with a unified event-based callback, and some parameter names have changed.</p>\n<h3 id=\"what-has-changed-3\" style=\"position:relative;\"><a href=\"#what-has-changed-3\" aria-label=\"what has changed 3 permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>What Has Changed</h3>\n<ul>\n<li><code class=\"language-text\">MPRoktEventCallback</code> has been removed and replaced with <code class=\"language-text\">MPRoktEvent</code></li>\n<li><code class=\"language-text\">selectPlacements:</code> — the <code class=\"language-text\">callbacks:</code> parameter has been replaced with <code class=\"language-text\">onEvent:</code></li>\n<li><code class=\"language-text\">purchaseFinalized:</code> — the <code class=\"language-text\">placementId:</code> parameter has been renamed to <code class=\"language-text\">identifier:</code></li>\n<li>New <code class=\"language-text\">globalEvents:</code> method for subscribing to global Rokt events</li>\n<li>New <code class=\"language-text\">MPRoktEmbeddedSizeChanged</code> event class</li>\n</ul>\n<h3 id=\"event-mapping-reference\" style=\"position:relative;\"><a href=\"#event-mapping-reference\" aria-label=\"event mapping reference permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>Event Mapping Reference</h3>\n<table>\n<thead>\n<tr>\n<th>Old Callback</th>\n<th>New Event Class</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code class=\"language-text\">onLoad</code></td>\n<td><code class=\"language-text\">MPRoktPlacementReady</code></td>\n</tr>\n<tr>\n<td><code class=\"language-text\">onUnLoad</code></td>\n<td><code class=\"language-text\">MPRoktPlacementClosed</code></td>\n</tr>\n<tr>\n<td><code class=\"language-text\">onShouldShowLoadingIndicator</code></td>\n<td><code class=\"language-text\">MPRoktShowLoadingIndicator</code></td>\n</tr>\n<tr>\n<td><code class=\"language-text\">onShouldHideLoadingIndicator</code></td>\n<td><code class=\"language-text\">MPRoktHideLoadingIndicator</code></td>\n</tr>\n<tr>\n<td><code class=\"language-text\">onEmbeddedSizeChange</code></td>\n<td><code class=\"language-text\">MPRoktEmbeddedSizeChanged</code></td>\n</tr>\n</tbody>\n</table>\n<p>Use the <code class=\"language-text\">onEvent</code> callback and type-check the event to handle specific cases. Remove any references to <code class=\"language-text\">MPRoktEventCallback</code>. For full code examples, see the <a href=\"https://github.com/mParticle/mparticle-apple-sdk/blob/main/MIGRATING.md\">mParticle Apple SDK MIGRATING.md</a> on GitHub.</p>\n<hr>\n<h2 id=\"upgrade-checklist\" style=\"position:relative;\"><a href=\"#upgrade-checklist\" aria-label=\"upgrade checklist permalink\" class=\"anchor before\"><svg width=\"16px\" height=\"17px\" viewBox=\"0 0 16 17\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n                <g id=\"Symbols\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                    <g id=\"Icon/Link\" fill=\"#98A0A3\" fill-rule=\"nonzero\">\n                        <g id=\"link\">\n                            <path d=\"M9.5,12.4 C9.6,12.4 9.7,12.4 9.9,12.4 C9.8,12.5 9.8,12.5 9.7,12.6 L7.5,14.8 C5.8,16.5 3,16.5 1.3,14.8 C-0.4,13.1 -0.4,10.3 1.3,8.6 L3.5,6.4 C3.6,6.3 3.6,6.3 3.7,6.2 C5,5 6.9,4.8 8.4,5.5 C8.8,5.7 9.3,6 9.6,6.4 C10,6.7 10.2,7.2 10.5,7.6 C10.2,7.9 9.9,8 9.5,8 C9.4,8 9.2,8 9.1,7.9 C8.9,7.5 8.5,7.2 8.1,6.9 C7,6.2 5.5,6.4 4.5,7.3 L3.8,8 L2.3,9.5 C1.2,10.6 1.2,12.5 2.3,13.6 C3.4,14.7 5.3,14.7 6.4,13.6 L7.9,12.1 C8.4,12.3 8.9,12.4 9.5,12.4 Z M14.7,1.3 C13,-0.4 10.2,-0.4 8.5,1.3 L6.3,3.5 C6.2,3.6 6.2,3.6 6.1,3.7 C6.7,3.7 7.4,3.7 8,3.9 L9.5,2.4 C10.6,1.3 12.5,1.3 13.6,2.4 C14.7,3.5 14.7,5.4 13.6,6.5 L12.1,8 L11.4,8.7 C10.4,9.7 8.9,9.8 7.8,9.1 C7.4,8.9 7.1,8.5 6.8,8.1 C6.7,8.1 6.5,8 6.4,8 C6,8 5.6,8.2 5.4,8.4 C5.6,8.8 5.9,9.3 6.3,9.6 C6.6,10 7.1,10.2 7.5,10.5 C9,11.2 10.9,11 12.3,9.8 C12.4,9.7 12.4,9.7 12.5,9.6 L14.7,7.4 C16.4,5.7 16.4,3 14.7,1.3 Z\" id=\"Shape\"></path>\n                        </g>\n                    </g>\n                </g>\n            </svg></a>Upgrade Checklist</h2>\n<ul>\n<li class=\"task-list-item\"><input type=\"checkbox\" disabled> Set your app’s minimum deployment to <strong>iOS 15</strong> and <strong>tvOS 15</strong> (required by the SDK)</li>\n<li class=\"task-list-item\"><input type=\"checkbox\" disabled> Align imports: Swift <code class=\"language-text\">import mParticle_Apple_SDK</code>; Objective-C <code class=\"language-text\">#import &lt;mParticle_Apple_SDK.h&gt;</code> (see <a href=\"#imports-swift-objective-c-and-rokt\">Imports</a>)</li>\n<li class=\"task-list-item\"><input type=\"checkbox\" disabled> Remove <code class=\"language-text\">proxyAppDelegate</code> and any <code class=\"language-text\">proxiedAppDelegate</code> references</li>\n<li class=\"task-list-item\"><input type=\"checkbox\" disabled> Forward push notification, URL, and user-activity events to the SDK (see <a href=\"/developers/client-sdks/ios/configuration/#forwarding-app-lifecycle-events-sdk-90\">Configuration</a> and <a href=\"/developers/client-sdks/ios/push-notifications/\">Push Notifications</a>)</li>\n<li class=\"task-list-item\"><input type=\"checkbox\" disabled> Replace deprecated <code class=\"language-text\">UIApplicationDelegate</code> URL/activity handling with SceneDelegate and <code class=\"language-text\">handleURLContext:</code> / <code class=\"language-text\">handleUserActivity:</code></li>\n<li class=\"task-list-item\"><input type=\"checkbox\" disabled> If using the NoLocation variant, switch to the standard <code class=\"language-text\">mParticle-Apple-SDK</code> target/product</li>\n<li class=\"task-list-item\"><input type=\"checkbox\" disabled> Remove <code class=\"language-text\">MPListenerController</code> and listener callbacks</li>\n<li class=\"task-list-item\"><input type=\"checkbox\" disabled> If you use the SDK in an app extension target, stay on SDK 8.x or contact your mParticle representative (see <a href=\"#app-extension-targets\">App extension targets</a>)</li>\n<li class=\"task-list-item\"><input type=\"checkbox\" disabled> If you used Carthage for the Apple SDK, migrate to Swift Package Manager or CocoaPods (see <a href=\"#removed-carthage-support\">Removed Carthage support</a>)</li>\n<li class=\"task-list-item\"><input type=\"checkbox\" disabled> If using MPRokt, migrate from <code class=\"language-text\">MPRoktEventCallback</code> to the <code class=\"language-text\">onEvent:</code> pattern and update <code class=\"language-text\">purchaseFinalized</code> parameter name</li>\n<li class=\"task-list-item\"><input type=\"checkbox\" disabled> If upgrading from 8.26.x or earlier, expect a fresh local database and re-established identity/session data</li>\n<li class=\"task-list-item\"><input type=\"checkbox\" disabled> Confirm ATS/Info.plist allows regional <code class=\"language-text\">mparticle.com</code> subdomains if using strict ATS</li>\n</ul>","frontmatter":{"title":"Upgrade to Version 9","order":30,"seoTitle":null,"seoDescription":null},"parent":{"__typename":"File","modifiedTime":"April 10, 2026"}}},"pageContext":{"slug":"/developers/client-sdks/ios/upgrade-to-version-9/"}},"staticQueryHashes":["2950460867"]}