Search code examples
ioscordovaapp-storeappstore-approvaludid

PhoneGap 1.0 app Submit to AppStore fails


We have an old app created with PhoneGap version 1.0. There is absolutely no chance to migrate to latest PhoneGap/Cordova because of huge changes in both iOS/JS code required.

An attempt to upload an app compiled with iOS SDK 6.1 failed with message: "Apps are not permitted to access the UDID and must not use the uniqueIdentifier method of UIDevice. Please update your apps and servers to associate users with the Vendor or Advertising identifiers introduced in iOS 6.".

PhoneGap 1.0 sources are not available in public, it's distributed as compiled framework.

Does anyone have an idea how to workaround this issue?


Solution

  • Crazy, but WORKING solution (hack)

    Well, once PhoneGap 1.0 is provided as compiled lib, we can try to change the compiled binary itself.

    The reason of Apple reject are calls to [UIDevice uniqueIdentifier] method deprecated in iOS 6. If your app (JS code) does not use UDID provided by PhoneGap (actually, have no idea is there a way to get it), it's safe (!? see NOTE bellow) to change the call of uniqueIdentifier to any other method returning NSString of UIDevice class.

    I've used +(NSString *)systemVersion - getter of systemVersion property.

    So, get any HEX editor and open file: /users/Shared/PhoneGap/Frameworks/PhoneGap.framework/PhoneGap replace uniqueIdentifier with systemVersion\0\0\0.

    \0 - are zero code bytes, needed to align the length of new name which is 3 bytes shorter!

    Rebuild your app, and… viola upload to AppStore succeeded!

    NOTE: Sure, you MUST check your app functionality not broken. I did for mine app and it works like a charm.