Skip to main content

Apple Update Token

Update Apple's Ads Attribution token and Apple Advertising ID before initializing Apptrove SDK for enhanced Apptrove on iOS devices.

Purpose

The main goal is to send the Apple token to the Apptrove SDK using the updateAppleAdsToken(token) method. This enables:

  • Enhanced Attribution: Better tracking of user acquisition from Apple Search Ads
  • Improved Analytics: More accurate campaign performance data
  • Cross-Platform Tracking: Seamless user journey tracking across iOS devices
note

End Goal: Call this.trackierCordovaPlugin.updateAppleAdsToken(token) to send the token to the SDK for enhanced tracking capabilities.

Requirements

  • iOS 14.0 or later
  • @capacitor-community/advertising-id plugin
  • Cordova 9.0 or later

Implementation Options

Use the existing Capacitor plugin for Apple Advertising ID:

Installation

npm install @capacitor-community/advertising-id
app.module.ts
import { NgModule } from '@angular/core';
import { TrackierCordovaPlugin, TrackierConfig, TrackierEnvironment } from '@awesome-cordova-plugins/trackier/ngx';
import { AdvertisingId } from '@capacitor-community/advertising-id';
import { Platform } from '@ionic/angular';

@NgModule({
declarations: [AppComponent],
imports: [BrowserModule, IonicModule.forRoot()],
providers: [TrackierCordovaPlugin],
bootstrap: [AppComponent],
})
export class AppModule {
constructor(
private trackierCordovaPlugin: TrackierCordovaPlugin,
private platform: Platform
) {
this.initializeTrackierSDK();
}

private initializeTrackierSDK() {
const key = "your-sdk-key-here";
const trackierConfig = new TrackierConfig(key, TrackierEnvironment.Development);

this.trackierCordovaPlugin.initializeSDK(trackierConfig).then(() => {
console.log("Trackier SDK initialized successfully.");

// Get Apple Ads Token and send to SDK (iOS only)
if (this.platform.is('ios')) {
this.getAppleAdsToken();
}
}).catch((error) => {
console.error("Error initializing Trackier SDK:", error);
});
}

// Get Apple Ads Token and send to Trackier SDK
private async getAppleAdsToken() {
try {
if (!this.platform.is('ios')) {
console.log("Apple Ads Token only available on iOS");
return;
}

console.log("Getting Apple Ads Token...");

// First request tracking authorization
const trackingResult = await AdvertisingId.requestTracking();

if (trackingResult.value === 'Authorized') {
// Permission granted, get the advertising ID
const advertisingResult = await AdvertisingId.getAdvertisingId();
const token = advertisingResult.id;

console.log("Apple Ads Token received:", token);

if (token) {
this.trackierCordovaPlugin.updateAppleAdsToken(token);
console.log("Apple Ads Token sent to Trackier SDK successfully");
} else {
console.log("No Apple Ads Token available");
}
} else {
console.log("Tracking permission denied or restricted");
}
} catch (error) {
console.error("Error getting Apple Ads Token:", error);
}
}
}

Option 2: Manual Implementation (For Custom 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;
});

Installation

For Pure Cordova

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

For Ionic/Capacitor

npm install @capacitor-community/advertising-id

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 @capacitor-community/advertising-id
if (window.AdvertisingId) {
const trackingResult = await AdvertisingId.requestTracking();
if (trackingResult.value === 'Authorized') {
const advertisingResult = await AdvertisingId.getAdvertisingId();
token = advertisingResult.id;
}
}

// 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);
}
}

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.0+
  • Permission Required: User must grant tracking permission for Advertising ID
  • Before Initialization: Always get token before initializing Trackier SDK
  • Physical Device: Test on physical device, not simulator
  • SDK Method: Use TrackierCordovaPlugin.updateAppleAdsToken() for Cordova, this.trackierCordovaPlugin.updateAppleAdsToken() for Ionic Native

Support