New Relic uses Apple's vendor ID to track specific devices for accurate counts of users. One of the special features of the vendor ID is it is unique across a suite of apps using the same bundle ID base. For example, the vendor ID is the same across apps that use the same bundle ID: com.company-name.* .
This article describes how to obscure this cross-app identifier using a hidden API (available in iOS agent version 6.11.0):
+[NewRelic saltDeviceUUID:(BOOL)enabled]Enable device uuid salt
To access the hidden method +[NewRelic saltDeviceUUID:(BOOL)enabled], add a category to the NewRelic object:
@interface NewRelic (salt) + (void) saltDeviceUUID:(BOOL)enabled;@endThis can be added in your AppDelegate.h after #include <NewRelic/NewRelic.h> and before the @implementation AppDelgate:
//// AppDelegate.m// // Created on 9/11/12.// © 2012 New Relic, Inc. All rights reserved.//
#import "AppDelegate.h"#import <NewRelic/NewRelic.h>
@interface NewRelic (salt) + (void) saltDeviceUUID:(BOOL)enabled;@end
@implementation AppDelegate// code @endCall the API
Next, call [NewRelic saltDeviceUUID:YES]; before your [NewRelic startWithApplicationToken:]
// // AppDelegate.m // // Created on 9/11/12. // © 2012 New Relic Inc. All rights reserved. //
#import "AppDelegate.h"#import <NewRelic/NewRelic.h>
@interface NewRelic (salt)+ (void) saltDeviceUUID:(BOOL)enabled;@end
@implementation AppDelegate- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [NewRelic saltDeviceUUID:YES]; [NewRelic startWithApplicationToken:@"MY_TOKEN"];
...}
...
@endYou device IDs are now be obfuscated in all events and data sent to New Relic.