Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .github/workflows/ios.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,12 @@ jobs:
LC_ALL: en_US.UTF-8
run: |
for i in 1 2 3; do
bundle exec pod install --repo-update && break
bundle exec pod install --repo-update && exit 0
echo "pod install attempt $i failed; retrying…"
sleep 5
done
echo "pod install failed after 3 attempts" >&2
exit 1

- name: Build (Debug, iOS simulator)
working-directory: example/ios
Expand Down
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# Changelog

## 0.0.4

- Bump the iOS native SDK to **`LinkTrailSDK ~> 0.0.11`** (from `0.0.10`).
- New `clickTokenSource: 'none'` mode (iOS) — the SDK never touches the clipboard (no paste
button, no "Allow Paste" alert); deferred matching falls back to probabilistic IP matching.

## 0.0.3

- Bump the Android native SDK to **`io.linktrail:sdk:0.0.5`** (from `0.0.4`).
Expand Down
2 changes: 1 addition & 1 deletion LinktrailReactNative.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ Pod::Spec.new do |s|

# The binary LinkTrail iOS SDK, published to the CocoaPods trunk — CocoaPods
# resolves it automatically, so the consuming app needs no extra Podfile line.
s.dependency "LinkTrailSDK", "~> 0.0.10"
s.dependency "LinkTrailSDK", "~> 0.0.11"

s.pod_target_xcconfig = {
"DEFINES_MODULE" => "YES",
Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,8 @@ On iOS, deferred attribution recovers a **click token** the tapped link left on
- **`'pasteButton'`** (default) — the token is read **only** when the user taps
`<LinkTrailPasteButton/>` (Apple's `UIPasteControl`), with **no "Allow Paste" alert**. You render
the button and set **`autoTrackInstall: false`** so the install waits for the tap.
- **`'none'`** — the SDK **never touches the clipboard** (no button, no alert); deferred matching
falls back to probabilistic IP matching only.

Android uses the Play Install Referrer instead, so `clickTokenSource` is ignored there and
`<LinkTrailPasteButton/>` renders nothing.
Expand Down
12 changes: 6 additions & 6 deletions example/ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -37,14 +37,14 @@ PODS:
- hermes-engine (0.80.3):
- hermes-engine/Pre-built (= 0.80.3)
- hermes-engine/Pre-built (0.80.3)
- LinktrailReactNative (0.0.3):
- LinktrailReactNative (0.0.4):
- boost
- DoubleConversion
- fast_float
- fmt
- glog
- hermes-engine
- LinkTrailSDK (~> 0.0.10)
- LinkTrailSDK (~> 0.0.11)
- RCT-Folly
- RCT-Folly/Fabric
- RCTRequired
Expand All @@ -67,7 +67,7 @@ PODS:
- ReactCommon/turbomodule/core
- SocketRocket
- Yoga
- LinkTrailSDK (0.0.10)
- LinkTrailSDK (0.0.11)
- RCT-Folly (2024.11.18.00):
- boost
- DoubleConversion
Expand Down Expand Up @@ -2521,8 +2521,8 @@ SPEC CHECKSUMS:
fmt: a40bb5bd0294ea969aaaba240a927bd33d878cdd
glog: 5683914934d5b6e4240e497e0f4a3b42d1854183
hermes-engine: fff23161928673afcd95f63146e651726f68b384
LinktrailReactNative: 7ec4b501092c29257ae7ab64d4b44a8748139c32
LinkTrailSDK: b243fcedba4f7437df1171e460294cf81f256e25
LinktrailReactNative: cdb6994035080e1edcb3697dcf8f2e287c5db30c
LinkTrailSDK: 53a14d30eb2cd9cbde0d41c3468be80a7a414e5d
RCT-Folly: 846fda9475e61ec7bcbf8a3fe81edfcaeb090669
RCTDeprecation: 2ebc9cc0329ede460c5d52956ce5e1ab715c2c2c
RCTRequired: b83daef658afafdc68d85b97ed082f4497a8ffa4
Expand Down Expand Up @@ -2586,7 +2586,7 @@ SPEC CHECKSUMS:
React-timing: 16e462e136f8c6efca6ae9f555ddf5f8af267be6
React-utils: a087aa6f63ccb58ccf347f25c3552ddbdf5bc0dc
ReactAppDependencyProvider: bd4d54d31d1a9e2eddff7675bb7628731a42b98c
ReactCodegen: 4903a7bb00a13fd83fccf4f9e1f8a1cbf8352e64
ReactCodegen: 8e8c7dc0113d08d218f409fbb2cd3b966b982e11
ReactCommon: 04362bc6625a80fa21b174f527352db70e5ad06a
SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748
Yoga: fb21153542336c6e7c4855022f4a93a286865259
Expand Down
5 changes: 4 additions & 1 deletion example/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions ios/LinkTrailModuleImpl.swift
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,7 @@ public final class LinkTrailModuleImpl: NSObject {
switch name {
case "pasteButton": return .pasteButton
case "automatic": return .automatic
case "none": return LinkTrailClickTokenSource.none
default: return nil
}
}
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "linktrail-react-native",
"version": "0.0.3",
"version": "0.0.4",
"description": "React Native SDK for LinkTrail — mobile attribution and deferred deep linking. A New Architecture TurboModule wrapping the native LinkTrail iOS and Android SDKs.",
"main": "./lib/module/index.js",
"types": "./lib/typescript/src/index.d.ts",
Expand Down
8 changes: 5 additions & 3 deletions src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -101,8 +101,10 @@ export interface LinkTrailOptions {
* iOS only. How the SDK obtains the deferred-attribution click token from the
* clipboard. `'pasteButton'` (default) reads it only when the user taps an
* Apple paste control (no "Allow Paste" alert); `'automatic'` reads the
* clipboard at install (shows the system "Allow Paste" alert). Ignored on
* Android (which uses the Play Install Referrer).
* clipboard at install (shows the system "Allow Paste" alert); `'none'` never
* touches the clipboard at all (no button, no alert) and relies on
* probabilistic IP matching only. Ignored on Android (which uses the Play
* Install Referrer).
*/
clickTokenSource?: LinkTrailClickTokenSource;
/**
Expand All @@ -115,7 +117,7 @@ export interface LinkTrailOptions {
}

/** Where the iOS SDK reads the deferred-attribution click token from. */
export type LinkTrailClickTokenSource = 'pasteButton' | 'automatic';
export type LinkTrailClickTokenSource = 'pasteButton' | 'automatic' | 'none';

/** SKAdNetwork 4.0+ coarse conversion value bucket (iOS only). */
export type LinkTrailCoarseConversionValue = 'low' | 'medium' | 'high';
Expand Down
Loading