Skip to content

Commit 2536235

Browse files
authored
Merge branch 'master' into leif/scim-updates
2 parents 11b121c + 0872594 commit 2536235

File tree

12 files changed

+1282
-636
lines changed

12 files changed

+1282
-636
lines changed

src/_data/sidenav/strat.yml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,3 +72,18 @@ sections:
7272
title: Querystring API
7373
- path: /connections/sources/catalog/libraries/website/javascript/troubleshooting
7474
title: Troubleshooting
75+
76+
77+
- slug: ios
78+
section_title: Analytics-iOS Documentation
79+
section:
80+
- path: /connections/sources/catalog/libraries/mobile/ios
81+
title: Analytics-iOS mobile source
82+
- path: /connections/sources/catalog/libraries/mobile/ios/quickstart
83+
title: iOS Quickstart tutorial
84+
- path: /connections/sources/catalog/libraries/mobile/ios/middleware
85+
title: Middlewares for iOS
86+
- path: /connections/sources/catalog/libraries/mobile/ios/troubleshooting
87+
title: Troubleshooting Analytics-iOS
88+
- path: /connections/sources/catalog/libraries/mobile/ios/ios-faqs
89+
title: iOS Frequently asked questions

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

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,9 @@ If you're not familiar with the Segment Specs, take a look to understand what th
190190
```javascript
191191
analytics.alias('newUserId')
192192
```
193-
**Important:** Calling `alias` used to be required for Mixpanel in all libraries in order to connect anonymous visitors to identified users. However, with the release of Mixpanel's New [identity merge feature](https://help.mixpanel.com/hc/en-us/articles/360039133851#enable-id-merge) this is no longer necessary if you enable the ID Merge Setting under Mixpanel -> Project Settings -> Identity Merge. **If you aren't using this setting, please continue with the instructions below.**
193+
194+
**Important:** Mixpanel used to require that you call `alias` in all libraries to connect anonymous visitors to identified users. However, with the release of Mixpanel's new [Identity Merge feature](https://help.mixpanel.com/hc/en-us/articles/360039133851#enable-id-merge) this is no longer necessary. To enable ID Merge, go to your Mixpanel Settings Dashboard, navigate to **Project Settings > Identity Merge** and enable the setting from that screen. If you are _not_ using this setting, use the instructions below.**
195+
194196

195197
As soon as you have a `userId` for a visitor that was previously anonymous you'll need to [`alias`](/docs/connections/spec/alias/) their old anonymous `id` to the new `userId`. In Mixpanel only **one** anonymous user history can be merged to **one** identified user. For that reason you should only call `alias` once, right after a user registered, but before the first `identify`.
196198

0 commit comments

Comments
 (0)