Skip to content

Commit 0872594

Browse files
authored
Merge pull request #1087 from segmentio/brie/ios14-integration-update
Update docs for Adjust, AppsFlyer, and Braze for iOS14 support
2 parents 6f53be2 + 57773b8 commit 0872594

File tree

5 files changed

+91
-13
lines changed

5 files changed

+91
-13
lines changed

src/connections/destinations/catalog/adjust/index.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,40 @@ SEGAnalyticsConfiguration *config = [SEGAnalyticsConfiguration configurationWith
4545
4646
In cases where the Adjust integration sometimes does not track the install attribution properly, you can configure a delay for the Adjust reporting to ensure all session parameters have been loaded properly. Segment allows you to configure this using our UI by enabling `setDelay` and providing a `delayTime` in seconds. Segment then calls the [Adjust iOS SDK's configuration](https://github.com/adjust/ios_sdk#delay-start) to set a delay. The maximum delay start time of the Adjust SDK is 10 seconds.
4747
48+
#### Additional device-mode set up for iOS 14 support
49+
50+
Segment’s Adjust SDK was updated to use Adjust version 4.23.0 to prepare for iOS 14. The updated Adjust SDK offers iOS14 support, AppTrackingTransparency (ATT) and SKAdNetwork dashboard features.
51+
52+
See Adjust's [Steps to Support iOS 14 documentation](https://help.adjust.com/manage-data/data-privacy/ios-14-user-privacy-frameworks#Steps-to-support-iOS-14) for more information.
53+
54+
To use the latest Adjust SDK to collect IDFAs you must do the following:
55+
56+
1. Upgrade to use Xcode12.
57+
2. Update your Segment Adjust SDK to version 3.0.0 or later.
58+
The latest SDK has integrated support for the SKAdNetwork, which is enabled by default. For access to the SKAdNetwork, make sure your ad networks are registered with Apple. Adjust automatically registers for SKAdNetwork attribution on SDK initialization, and can handle the conversion value update. You can choose to disable this by calling `[adjustConfig deactivateSKAdNetworkHandling];` on the config object in your `AppDelegate.m` file.
59+
3. Import and implement the AppTrackingTransparency (ATT) Framework.
60+
Navigate to your project `Info.plist` and add a “Privacy - Tracking Usage Description”. This description appears in a popup when the application initializes in iOS 14. Users are prompted to indicate whether or not they want to allow tracking.
61+
4. Launch an opt-in popup using Adjust’s SDK wrapper, built on top of `requestTrackingAuthorizationWithCompletionHandler` for the ATT Framework. An iOS pop-up launches when the wrapper is called the first time. When it is called again, the wrapper retrieves the tracking authorization status, which is sent to the Adjust backend. Adjust relays the information directly to you. The example below shows how to use this wrapper.
62+
63+
```swift
64+
[Adjust requestTrackingAuthorizationWithCompletionHandler:^(NSUInteger status) {
65+
switch (status) {
66+
case 0:
67+
// ATTrackingManagerAuthorizationStatusNotDetermined case
68+
break;
69+
case 1:
70+
// ATTrackingManagerAuthorizationStatusRestricted case
71+
break;
72+
case 2:
73+
// ATTrackingManagerAuthorizationStatusDenied case
74+
break;
75+
case 3:
76+
// ATTrackingManagerAuthorizationStatusAuthorized case
77+
break;
78+
}];
79+
```
80+
81+
5. Follow [Segment's guide for collecting IDFA](https://segment.com/docs/connections/sources/catalog/libraries/mobile/ios/#idfa-collection-in-40-beta-and-later)
4882

4983
### Android
5084

src/connections/destinations/catalog/appsflyer/index.md

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,19 +18,47 @@ This document was last updated on April 27, 2018. If you notice any gaps, outdat
1818

1919
**Important:** If you plan on using the server-side destination for an Android project, make sure to enter your **Android App ID**. If you are using only the mobile SDK, Android projects only require the **AppsFlyer Dev Key**. iOS projects always require both the **AppsFlyer Dev Key** and the **Apple App ID**. Also, note that if you do use the server-side destination, you will not be able to selectively disable calls sent to AppsFlyer using your Segment dashboard.
2020

21+
#### Additional device-mode set up for iOS 14 support
22+
23+
Segment’s AppsFlyer iOS SDK was updated to use AppsFlyer version 6.0 beta to prepare for iOS 14. The SDK beta is compatible with the beta version of iOS 14, and supports AppsFlyer's aggregate attribution, and Apple's AppTrackingTransperancy framework, and more. See [the AppsFlyer blog post](https://www.appsflyer.com/blog/privacy-centric-attribution-ios14/] about AppsFlyer's new privacy-centric attribution model.
24+
25+
To use the latest AppsFlyer SDK to collect IDFAs you must do the following:
26+
27+
1. Upgrade to use Xcode12.
28+
2. Update your Segment AppsFlyer SDK to version 6.0.2 or later.
29+
3. Import and implement the AppTrackingTransparency (ATT) Framework.
30+
- Navigate to your project `Info.plist` and add a “Privacy - Tracking Usage Description”. This description appears in a popup when the application initializes in iOS 14. Users are prompted to indicate whether or not they want to allow tracking.
31+
4. Add and customize the following code in your `AppDelegate.m` file on `didFinishLaunchingWithOptions` to allow AppsFlyer collect IDFAs.
32+
33+
```swift
34+
// The following block is for applications wishing to collect IDFA.
35+
// for iOS 14 and later - The user will be prompted for permission to collect IDFA.
36+
// If permission granted, the IDFA will be collected by the SDK.
37+
// for iOS 13 and earlier - The IDFA will be collected by the SDK. The user will NOT be prompted for permission.
38+
if #available(iOS 14, *) {
39+
// Set a timeout for the SDK to wait for the IDFA collection before handling app launch
40+
AppsFlyerLib.shared().waitForAdvertisingIdentifier(withTimeoutInterval: 60)
41+
// Show the user the Apple IDFA consent dialog (AppTrackingTransparency)
42+
// Can be called in any place
43+
ATTrackingManager.requestTrackingAuthorization { (status) in
44+
}
45+
}
46+
```
47+
5. Follow [Segment's guide for collecting IDFA](https://segment.com/docs/connections/sources/catalog/libraries/mobile/ios/#idfa-collection-in-40-beta-and-later)
48+
2149
### Server
2250

23-
AppsFlyer offers an **augmentative** server-side [HTTP API](https://support.appsflyer.com/hc/en-us/articles/207034486-Server-to-Server-In-App-Events-API-HTTP-API-) intended for use along side their mobile SDK. Use the server-side destination alongside the mobile SDK to associate out-of-app events such as website or offline purchases with attributed users/devices. Read further for more information on this functionality.
51+
AppsFlyer offers an **augmentative** server-side [HTTP API](https://support.appsflyer.com/hc/en-us/articles/207034486-Server-to-Server-In-App-Events-API-HTTP-API-) intended for use along side the AppsFlyer mobile SDK. Use the cloud-mode destination _with_ the mobile SDK to link out-of-app events (such as website or offline purchases) with attributed users and devices.
2452

25-
**Important**: Keep in mind that the server-side destination is not meant to *supplant* the client side SDK! In order for AppsFlyer to properly attribute, you must bundle their mobile SDK! The server-side destination should not be used alone. Also, keep in mind if you are passing in `appsFlyerId` for server-side calls, you will not be able to disable events from sending to AppsFlyer using your Segment dashboard.
53+
**Important**: The cloud-mode destination is not meant to replace the device-mode destination, and you should not use the cloud-mode destination by itself. AppsFlyer requires that you bundle the mobile SDK to correctly attribute user actions. Remember that if you pass in an `appsFlyerId` on cloud-mode calls, you cannot prevent events from sending to AppsFlyer from the Segment app.
2654

27-
If you'd like to use AppsFlyer fully server-side, this can be done but it is a Enterprise Customer Feature and you need to contact your AppsFlyer representative to enable this feature.
55+
If you want to use AppsFlyer server-side only, contact your AppsFlyer representative, as this is an Enterprise Customer Feature.
2856

2957
## Identify
3058

3159
If you're not familiar with the Segment Specs, take a look to understand what the [Identify method](https://segment.com/docs/connections/spec/identify/) does. An example iOS call would look like:
3260

33-
```ios
61+
```swift
3462
[[SEGAnalytics sharedAnalytics] identify:@"12091906-01011992"
3563
traits:@{ @"email": @"[email protected]" }];
3664
```
@@ -43,12 +71,12 @@ When you call `.identify()`, we will use AppsFlyer's `setCustomerUserID` to send
4371

4472
If you're not familiar with the Segment Specs, take a look to understand what the [Track method](https://segment.com/docs/connections/spec/track/) does. An example iOS call would look like:
4573

46-
```ios
74+
```swift
4775
[[SEGAnalytics sharedAnalytics] track:@"Article Completed"
4876
properties:@{ @"title": @"How to Create a Tracking Plan", @"course": @"Intro to Analytics" }];
4977
```
5078

51-
When you call `track`, we translate it automatically and send the event to AppsFlyer.
79+
When you call `track`, Segment translates it automatically and sends the event to AppsFlyer.
5280

5381
We include all the event properties as callback parameters on the AppsFlyer event, and automatically translate `properties.revenue` to the appropriate AppsFlyer purchase event properties based on our spec'd properties.
5482

src/connections/destinations/catalog/apptimize/index.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,8 @@ It is important to note that if the app keys in the plist/code and the Segment d
6868
## Screen
6969
7070
If you're not familiar with the Segment Specs, take a look to understand what the [Screen method](https://segment.com/docs/connections/spec/screen/) does. An example iOS call would look like:
71-
```ios
71+
72+
```swift
7273
[[SEGAnalytics sharedAnalytics] screen:@"Photo Feed"
7374
properties:@{ @"Feed Type": @"public" }];
7475
```
@@ -79,7 +80,7 @@ When you record a `screen`, Apptimize will track an event of the form `Viewed [S
7980

8081
If you're not familiar with the Segment Specs, take a look to understand what the [Identify method](https://segment.com/docs/connections/spec/identify/) does. An example iOS call would look like:
8182

82-
```ios
83+
```swift
8384
[[SEGAnalytics sharedAnalytics] identify:@"12091906-01011992"
8485
traits:@{ @"email": @"[email protected]" }];
8586
```
@@ -90,7 +91,7 @@ When you `identify` a user, Segment will pass that user's information to Apptimi
9091

9192
If you're not familiar with the Segment Specs, take a look to understand what the [Track method](https://segment.com/docs/connections/spec/track/) does. An example iOS call would look like:
9293

93-
```ios
94+
```swift
9495
[[SEGAnalytics sharedAnalytics] track:@"Article Completed"
9596
properties:@{ @"title": @"How to Create a Tracking Plan", @"course": @"Intro to Analytics" }];
9697
```
@@ -99,7 +100,7 @@ When you `track` an event, the event will be marked in Apptimize as an occurence
99100

100101
**Optional:** You can also specify a value for each event, by adding a `value` property to the event when tracking. This is useful, for instance, when you want to track the price of orders each time a user clicks "Buy" in your app's shopping cart. Including an example iOS call below:
101102

102-
```ios
103+
```swift
103104
[[SEGAnalytics sharedAnalytics] track:@"Item Purchased"
104105
properties:@{ @"item": @"Sample Item", @"value": @5.23 }];
105106
```

src/connections/destinations/catalog/branch-metrics/index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ This document was last updated on November 13, 2019. If you notice any gaps, out
3434
## Identify
3535

3636
If you're not familiar with the Segment Specs, take a look to understand what the [Identify method](https://segment.com/docs/connections/spec/identify/) does. An example iOS call would look like:
37-
```ios
37+
```swift
3838
[[SEGAnalytics sharedAnalytics] identify:@"12091906-01011992"
3939
traits:@{ @"email": @"[email protected]" }];
4040
```
@@ -43,7 +43,7 @@ If you're not familiar with the Segment Specs, take a look to understand what th
4343

4444
If you're not familiar with the Segment Specs, take a look to understand what the [Track method](https://segment.com/docs/connections/spec/track/) does. An example iOS call would look like:
4545

46-
```ios
46+
```swift
4747
[[SEGAnalytics sharedAnalytics] track:@"Article Completed"
4848
properties:@{ @"title": @"How to Create a Tracking Plan", @"course": @"Intro to Analytics" }];
4949
```

src/connections/destinations/catalog/braze/index.md

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,22 @@ If you notice any gaps or outdated information in this document, or simply want
4545
4646
#### Sample App
4747
48-
Braze has created a sample iOS application that integrates Braze using Segment. Check it out at the [Github repo](https://github.com/Appboy/appboy-segment-ios/tree/master/Example).
48+
Braze created a sample iOS application that integrates Braze using Segment. Check it out at the [Github repo](https://github.com/Appboy/appboy-segment-ios/tree/master/Example).
49+
50+
#### Additional device-mode set up for iOS 14 support
51+
52+
Segment’s Braze SDK was updated to use AppBoy's version 3.26.1 to prepare for iOS 14. Braze will continue to allow apps to provide a user’s IDFA value to the Braze SDK. The `ABK_ENABLE_IDFA_COLLECTION` macro, which would conditionally compile in optional automatic IDFA collection, will be removed in Braze's iOS 14 release.
53+
54+
See the [Braze iOS 14 SDK Upgrade Guide](https://www.braze.com/docs/developer_guide/platform_integration_guides/ios/ios_14/) for more information.
55+
56+
To use the latest Braze SDK to collect IDFAs you must do the following:
57+
58+
1. Upgrade to use Xcode12.
59+
2. Update your Segment Appboy SDK to version 3.3.0 or greater.
60+
3. Import and implement the AppTrackingTransparency (ATT) Framework.
61+
- Navigate to your project `Info.plist` and add a “Privacy - Tracking Usage Description”. This description appears in a popup when the application initializes in iOS 14. Users are prompted to indicate whether or not they want to allow tracking.
62+
4. Implement Braze's `ABKIDFADelegate`. For more information on how to implement this see [Braze’s IDFA Collection documentation](https://www.braze.com/docs/developer_guide/platform_integration_guides/ios/initial_sdk_setup/other_sdk_customizations/#implementing-idfa-collection).
63+
5. Follow [Segment's guide for collecting IDFA](https://segment.com/docs/connections/sources/catalog/libraries/mobile/ios/#idfa-collection-in-40-beta-and-later)
4964
5065
### Android
5166

0 commit comments

Comments
 (0)