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
Option 1: Using @capacitor-community/advertising-id (Recommended)
Use the existing Capacitor plugin for Apple Advertising ID:
Installation
npm install @capacitor-community/advertising-id
- TypeScript (Ionic Native)
- JavaScript (Pure Cordova)
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);
}
}
}
app.js
document.addEventListener('deviceready', onDeviceReady, false);
function onDeviceReady() {
// Initialize SDK
const key = "your-sdk-key-here";
const trackierConfig = new TrackierConfig(key, TrackierEnvironment.Development);
TrackierCordovaPlugin.initializeSDK(trackierConfig).then(() => {
console.log("Trackier SDK initialized successfully.");
// Get Apple Ads Token and send to SDK (iOS only)
if (device.platform === 'iOS') {
getAppleAdsToken();
}
}).catch((error) => {
console.error("Error initializing Trackier SDK:", error);
});
}
// Get Apple Ads Token and send to Trackier SDK
async function getAppleAdsToken() {
try {
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) {
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
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.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