You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 852a0de
Browse filesBrowse the repository at this point in the historyBrowse files
docs: consolidate 6.x to 7.0.0 migration guide, deslop integration docs
MIGRATION.md's three overlapping lists (callback-removal prose, symbol table, alignment table) are replaced by one alphabetical Full API change reference table covering every affected symbol, plus a TOC and a tightened LLM-assistant prompt. Docs/RN_API.md gets an upgrading-from-6.x callout linking to MIGRATION.md, and its links into MIGRATION.md are repointed from anchors that never existed (table rows have no anchor) to real headings. The remaining Docs/*.md files get formatting cleanup and removal of stale 6.x-era examples, continuing the RPC-to-Plugin-API alignment doc pass from the previous commit.
Copy file name to clipboardExpand all lines: Docs/RN_CMP.md
+18-39Lines changed: 18 additions & 39 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -19,7 +19,7 @@ Through a dedicated SDK API: Developers can pass Google's required consent data
19
19
A CMP compatible with TCF v2.2/2.3 collects DMA consent data and stores it in NSUserDefaults (iOS) and SharedPreferences (Android). To enable the SDK to access this data and include it with every event, follow these steps:
20
20
21
21
1. Call `appsFlyer.enableTCFDataCollection(true)`
22
-
2.`init(devKey, appId)` and register listeners as usual (see [Initialization Flow](RN_API.md#initialization-flow)) — 7.0.0 always requires an explicit `start()` call, so there is no separate "manual start" mode to opt into.
22
+
2.`init(devKey, appId)` and register listeners as usual (see [Initialization Flow](RN_API.md#initialization-flow)).
23
23
3. Use the CMP to decide if you need the consent dialog in the current session to acquire the consent data. If you need the consent dialog move to step 4; otherwise move to step 5
24
24
4. Get confirmation from the CMP that the user has made their consent decision and the data is available in NSUserDefaults/SharedPreferences
25
25
5. Call `appsFlyer.start()` from inside `registerSessionReadyListener`'s callback, after the CMP decision is resolved
@@ -51,17 +51,18 @@ useEffect(() => {
51
51
52
52
If your app does not use a TCF v2.2/2.3-compatible CMP, you must manually provide the consent data using the SDK API.
53
53
54
-
How to Set Consent Data: </br>
55
-
1. Determine GDPR Applicability:
56
-
* If GDPR applies, check whether consent data is already stored.
57
-
* If not stored, show a consent dialog to obtain user consent.
58
-
2. Create an AppsFlyerConsent object with the relevant parameters.
59
-
3. Pass the consent data to the SDK using appsFlyer.setConsentData(consentData) inside `registerSessionReadyListener`'s callback, before calling `start()`.
60
-
4. Initialize the SDK with `appsFlyer.init(devKey, appId)` (see [Initialization Flow](RN_API.md#initialization-flow)).
54
+
How to Set Consent Data:
55
+
56
+
1. Determine GDPR Applicability:
57
+
- If GDPR applies, check whether consent data is already stored.
58
+
- If not stored, show a consent dialog to obtain user consent.
59
+
2. Create an AppsFlyerConsent object with the relevant parameters.
60
+
3. Pass the consent data to the SDK using appsFlyer.setConsentData(consentData) inside `registerSessionReadyListener`'s callback, before calling `start()`.
61
+
4. Initialize the SDK with `appsFlyer.init(devKey, appId)` (see [Initialization Flow](RN_API.md#initialization-flow)).
61
62
62
63
#### Setting Consent Data for Users
63
64
64
-
<b>When GDPR Applies</b>
65
+
##### When GDPR Applies
65
66
66
67
If GDPR applies to the user, create an AppsFlyerConsent object with the user’s preferences.
67
68
```javascript
@@ -86,29 +87,16 @@ useEffect(() => {
86
87
}, []);
87
88
```
88
89
89
-
<b>When GDPR Does Not Apply</b>
90
-
91
-
If GDPR does not apply to the user, simply mark it as such in the AppsFlyerConsent object.
If GDPR does not apply to the user, simply mark it as such in the AppsFlyerConsent object. Use the same initialization flow as above, but with a different consent constructor call:
Copy file name to clipboardExpand all lines: Docs/RN_DeepLinkIntegrate.md
+20-9Lines changed: 20 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -36,6 +36,18 @@ public class MainActivity extends ReactActivity {
36
36
}
37
37
```
38
38
39
+
**Cold-start deep links**: The native SDK inspects the launch Intent only after `init()` completes. For cold-start deep links (app not running when link is clicked), re-deliver them via `Linking.getInitialURL()` and `appsFlyer.performDeepLinking()` inside `init().then()`:
40
+
41
+
```javascript
42
+
appsFlyer.init(devKey, appId)
43
+
.then(async () => {
44
+
consturl=awaitLinking.getInitialURL();
45
+
if (url) {
46
+
awaitappsFlyer.performDeepLinking(url, true);
47
+
}
48
+
});
49
+
```
50
+
39
51
### App Links
40
52
First, you need to generate SHA256 fingerprint, then add the following intent-filter to the relevant activity in your app’s manifest:
41
53
```xml
@@ -49,9 +61,11 @@ First, you need to generate SHA256 fingerprint, then add the following intent-fi
49
61
android:scheme="https" />
50
62
</intent-filter>
51
63
```
52
-
For more on App Links check out the guide [here](https://dev.appsflyer.com/hc/docs/dl_android_init_setup#procedures-for-android-app-links).
64
+
See the [guide](https://dev.appsflyer.com/hc/docs/dl_android_init_setup#procedures-for-android-app-links) for App Links setup.
53
65
54
66
### URI Scheme
67
+
A URI scheme is a URL that leads users directly to the mobile app. When an app user enters a URI scheme in a browser address bar or clicks on a link based on a URI scheme, the app launches and the user is deep-linked.
68
+
55
69
In your app’s manifest add the following intent-filter to your relevant activity:
56
70
```xml
57
71
<intent-filter>
@@ -64,10 +78,10 @@ In your app’s manifest add the following intent-filter to your relevant activi
64
78
android:scheme="afshopapp" />
65
79
</intent-filter>
66
80
```
67
-
For more on URI Scheme check out the guide [here](https://dev.appsflyer.com/hc/docs/dl_android_init_setup#procedures-for-uri-scheme).
81
+
For URI Scheme setup, see the [guide](https://dev.appsflyer.com/hc/docs/dl_android_init_setup#procedures-for-uri-scheme).
68
82
69
83
## iOS Deeplink Setup
70
-
In order to record retargeting and use the `registerDeepLinkListener`/UDL callback in iOS (`onAppOpenAttribution` was removed in 7.0.0 and merged into `registerDeepLinkListener` — see MIGRATION.md), the app needs to forward opened URLs / Universal Links / cold-start launch options to the native SDK. This is done entirely in your app's native **AppDelegate** — there is no JavaScript API for this (`handleOpenURL`/`handleOpenUrl`/`continueUserActivity`/`handleLaunchOptions` are not exposed by this plugin's JS surface):
84
+
In order to record retargeting and use the `registerDeepLinkListener`/UDL callback in iOS (`onAppOpenAttribution` was removed in 7.0.0 and merged into `onDeepLink`, which was later renamed to `registerDeepLinkListener` — see MIGRATION.md), the app needs to forward opened URLs / Universal Links / cold-start launch options to the native SDK. This is done entirely in your app's native **AppDelegate** — there is no JavaScript API for this (`handleOpenURL`/`handleOpenUrl`/`continueUserActivity`/`handleLaunchOptions` are not exposed by this plugin's JS surface):
`AppsFlyerLib` is already available as a transitive dependency of this plugin (via the vendored `AppsFlyerRPC` pod) — no extra `pod` entry is needed to `import AppsFlyerLib` in your own AppDelegate.
96
110
97
-
**Expo apps**: the `openURL`/`continueUserActivity` forwarding above is auto-injected into your generated AppDelegate by this plugin's config plugin at `expo prebuild` time (see [Expo Deep Link Integration](/Docs/RN_ExpoDeepLinkIntegration.md)) — you don't need to add it by hand. `handleLaunchOptions` isn't auto-injected yet; add it manually if you need cold-start launch options forwarded.
111
+
**Expo apps**: the `openURL`/`continueUserActivity`and `handleLaunchOptions`forwarding above is auto-injected into your generated AppDelegate by this plugin's config plugin at `expo prebuild` time (see [Expo Deep Link Integration](/Docs/RN_ExpoDeepLinkIntegration.md)) — you don't need to add it by hand for either ObjC or Swift AppDelegate templates.
98
112
99
113
### Universal Links
100
114
Universal Links link between an iOS mobile app and an associate website/domain, such as AppsFlyer’s OneLink domain (xxx.onelink.me). To do so, it is required to:
@@ -115,12 +129,9 @@ Universal Links link between an iOS mobile app and an associate website/domain,
115
129
</plist>
116
130
```
117
131
118
-
For more on Universal Links check out the guide [here](https://dev.appsflyer.com/hc/docs/dl_ios_init_setup#procedures-for-ios-universal-links).
132
+
For more on Universal Links, check the [guide](https://dev.appsflyer.com/hc/docs/dl_ios_init_setup#procedures-for-ios-universal-links).
119
133
120
134
### URI Scheme
121
-
A URI scheme is a URL that leads users directly to the mobile app.
122
-
When an app user enters a URI scheme in a browser address bar box, or clicks on a link based on a URI scheme, the app launches and the user is deep-linked.
123
-
124
135
To configure it you will have to:
125
136
126
137
1. Add a unique url identifier in the URL types entry in the app's `info.plist`
@@ -149,4 +160,4 @@ example of a URL scheme configuration in the `info.plist`:
149
160
</plist>
150
161
```
151
162
152
-
For more on URI Scheme check out the guide [here](https://dev.appsflyer.com/hc/docs/dl_ios_init_setup#procedures-for-uri-scheme).
163
+
For URI Scheme configuration, see the [guide](https://dev.appsflyer.com/hc/docs/dl_ios_init_setup#procedures-for-uri-scheme).
Copy file name to clipboardExpand all lines: Docs/RN_EspIntegration.md
+24-81Lines changed: 24 additions & 81 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,12 +10,6 @@ hidden: false
10
10
11
11
ESP (Email Service Provider) support allows AppsFlyer to handle deep links that are wrapped by email service providers. When users click links in emails, ESP services often wrap the original URL with their own tracking domains. This can break deep linking functionality. ESP support resolves these wrapped URLs to extract the original deep link.
12
12
13
-
### How ESP Works:
14
-
1.**Email Campaign**: Your email contains a deep link to your app
15
-
2.**ESP Wrapping**: Email provider wraps your link with their tracking domain
16
-
3.**User Clicks**: User clicks the wrapped link from their email
17
-
4.**ESP Resolution**: AppsFlyer resolves the wrapped URL to get the original link
18
-
5.**Decision**: If original link is a OneLink → continue deep linking; if web URL → open in browser
19
13
20
14
## 🚀 Prerequisites
21
15
@@ -106,7 +100,7 @@ public class AppDelegate: ExpoAppDelegate {
106
100
}
107
101
```
108
102
109
-
See [Deep linking integration](RN_DeepLinkIntegrate.md#ios-deeplink-setup) for the full native pattern (this plugin's Expo config plugin auto-injects the `openURL`/`continueUserActivity` calls above at `expo prebuild` time — `handleLaunchOptions` is not auto-injected yet).
103
+
See [Deep linking integration](RN_DeepLinkIntegrate.md#ios-deeplink-setup) for the full native pattern (this plugin's Expo config plugin auto-injects the `openURL`/`continueUserActivity`and `handleLaunchOptions`calls above at `expo prebuild` time).
110
104
111
105
---
112
106
@@ -243,17 +237,15 @@ import appsFlyer from 'react-native-appsflyer';
243
237
* This MUST be called before AppsFlyer SDK initialization
**1. Deep links open Google Play instead of app:**
411
-
- Remove `android:autoVerify="true"` from intent filters
412
-
- Test with ADB for direct app opening
413
-
- Ensure app is installed and intent filters are correct
401
+
For general Android configuration issues (manifest merging, package attribute deprecation, autoVerify behavior, backup rules), refer to the [known-issues knowledge base](../Docs/RN_API.md) and [AppsFlyer Android SDK documentation](https://dev.appsflyer.com/hc/docs/install-android-sdk).
414
402
415
-
**2. Email deep links redirect to Play Store (Domain Disabled):**
403
+
**ESP-Specific: Domain Verification Issues**
416
404
417
-
This is a common issue where clicking deep links from emails opens the Play Store instead of your app. This happens when the domain is disabled in Android's app link settings.
405
+
When deep links from emails open the Play Store instead of your app, the domain may be disabled in Android's app link settings.
0 commit comments