Skip to main content

Apple Update Token

Update Apple's Ads Attribution token before initializing Trackier SDK for enhanced tracking on iOS devices.

Requirements

  • iOS 14.3 or later
  • AdServices framework
  • Cordova 9.0 or later

Implementation Options

Since there are no existing Cordova plugins for Apple Ads attribution, you need to create a custom plugin:

Step 1: Create Custom Plugin

Create a minimal custom plugin for Apple Ads attribution:

<!-- plugin.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0" id="cordova-plugin-apple-ads-attribution" version="1.0.0">
<name>Apple Ads Attribution</name>
<platform name="ios">
<config-file target="config.xml" parent="/*">
<framework src="AdServices.framework" />
</config-file>
<header-file src="src/ios/AppleAdsAttribution.h" />
<source-file src="src/ios/AppleAdsAttribution.m" />
<js-module src="www/AppleAdsAttribution.js" name="AppleAdsAttribution">
<clobbers target="AppleAdsAttribution" />
</js-module>
</platform>
</plugin>

Step 2: iOS Native Implementation

// src/ios/AppleAdsAttribution.h
#import <Cordova/CDV.h>
#import <AdServices/AdServices.h>

@interface AppleAdsAttribution : CDVPlugin
- (void)getAttributionToken:(CDVInvokedUrlCommand*)command;
@end
// src/ios/AppleAdsAttribution.m
#import "AppleAdsAttribution.h"

@implementation AppleAdsAttribution

- (void)getAttributionToken:(CDVInvokedUrlCommand*)command {
if (@available(iOS 14.3, *)) {
NSError *error = nil;
NSString *token = [AAAttribution attributionTokenWithError:&error];

if (token && !error) {
CDVPluginResult *result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:token];
[self.commandDelegate sendPluginResult:result callbackId:command.callbackId];
} else {
CDVPluginResult *result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:@"No token available"];
[self.commandDelegate sendPluginResult:result callbackId:command.callbackId];
}
} else {
CDVPluginResult *result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:@"iOS 14.3+ required"];
[self.commandDelegate sendPluginResult:result callbackId:command.callbackId];
}
}

@end

Step 3: JavaScript Interface

// www/AppleAdsAttribution.js
cordova.define("cordova-plugin-apple-ads-attribution.AppleAdsAttribution", function(require, exports, module) {
var exec = require('cordova/exec');

var AppleAdsAttribution = {
getAttributionToken: function(successCallback, errorCallback) {
exec(successCallback, errorCallback, 'AppleAdsAttribution', 'getAttributionToken', []);
}
};

module.exports = AppleAdsAttribution;
});

Option 2: Use React Native Plugin (For Ionic/Capacitor Only)

If using Ionic with Capacitor, you can use the React Native plugin:

npm install react-native-attribution-token

Plugin Link: react-native-attribution-token

Note: This only works for Ionic/Capacitor projects, not pure Cordova projects.

Installation

For Pure Cordova

cordova plugin add ./cordova-plugin-apple-ads-attribution

For Ionic/Capacitor

npm install react-native-attribution-token

Usage

Get Token Before SDK Initialization

document.addEventListener('deviceready', function() {
initializeSDK();
});

async function initializeSDK() {
// Get Apple Ads token first
await updateAppleAdsToken();

// Initialize SDK
const config = {
appToken: 'YOUR_APP_TOKEN',
environment: 'production'
};

TrackierCordovaPlugin.initializeSDK(config);
}

async function updateAppleAdsToken() {
try {
let token = null;

// For custom Cordova plugin
if (window.AppleAdsAttribution) {
token = await new Promise((resolve, reject) => {
AppleAdsAttribution.getAttributionToken(
(token) => resolve(token),
(error) => reject(error)
);
});
}

if (token) {
TrackierCordovaPlugin.updateAppleAdsToken(token);
}
} catch (error) {
console.error('Error getting Apple Ads token:', error);
}
}

Ionic Native Example

// app.component.ts
import { Component } from '@angular/core';
import { Platform } from '@ionic/angular';
import { TrackierCordovaPlugin, TrackierConfig, TrackierEnvironment } from '@awesome-cordova-plugins/trackier/ngx';

@Component({
selector: 'app-root',
templateUrl: 'app.component.html'
})
export class AppComponent {
constructor(
private platform: Platform,
private trackierCordovaPlugin: TrackierCordovaPlugin
) {
this.initializeApp();
}

async initializeApp() {
await this.platform.ready();

// Get Apple Ads token before SDK initialization
await this.updateAppleAdsToken();

// Initialize SDK
const config = new TrackierConfig('YOUR_APP_TOKEN', TrackierEnvironment.Production);
this.trackierCordovaPlugin.initializeSDK(config);
}

async updateAppleAdsToken() {
try {
let token = null;

// For custom plugin
if ((window as any).AppleAdsAttribution) {
token = await new Promise<string>((resolve, reject) => {
(window as any).AppleAdsAttribution.getAttributionToken(
(token: string) => resolve(token),
(error: any) => reject(error)
);
});
}

if (token) {
this.trackierCordovaPlugin.updateAppleAdsToken(token);
}
} catch (error) {
console.error('Error getting Apple Ads token:', error);
}
}
}

Function Reference

MethodDescriptionParametersReturns
updateAppleAdsToken(token)Update Apple Ads token in Trackier SDKStringPromise

Important Notes

  • iOS Only: Apple Ads token is only available on iOS 14.3+
  • Before Initialization: Always get token before initializing Trackier SDK
  • No Existing Plugins: There are no pre-built Cordova plugins for Apple Ads attribution
  • Manual Implementation: Pure Cordova projects require custom plugin development
  • Ionic/Capacitor: Can use React Native plugins if using Capacitor
  • Physical Device: Test on physical device, not simulator
  • SDK Method: Use TrackierCordovaPlugin.updateAppleAdsToken() for Cordova, this.trackierCordovaPlugin.updateAppleAdsToken() for Ionic Native

Alternative: Manual Implementation

If you prefer not to create a custom plugin, you can manually implement the AdServices framework integration directly in your Cordova project's iOS native code.

Support

For issues, refer to our Support page.