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
Option 1: Manual Implementation (Recommended for Cordova)
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
Method | Description | Parameters | Returns |
---|---|---|---|
updateAppleAdsToken(token) | Update Apple Ads token in Trackier SDK | String | Promise |
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.