From the 1st, May 2013 Apple will reject the app which will use uniqueIdentifier
. In my app i am using Paypal library and i found that libpaypalmpl.a is using <
The problem is not how the objects in the library are referenced, it's the static library itself that is causing the trouble. It contains a call to uniqueIdentifier on UIDevice or at least a method that has the same name. Linking against this library will get the app rejected by apple as of May 1st. A new version of the library is needed.
Hence the third party library is using the uniqueIdentifier
, you cannot do anything.
It's a popular library, so they will release an update soon, hope so. Wait till then, or remove the library and implement your own way for doing this.
Edit:
I read the documents of Paypal. Possibly there is one method that can have the uniqueIdentifier:
PayPalPaymentViewController *paymentViewController = [[PayPalPaymentViewController alloc] initWithClientId:@"YOUR_CLIENT_ID" receiverEmail:@"YOUR_PAYPAL_EMAIL_ADDRESS" payerId:aPayerId payment:payment delegate:self];
In which the payerId
can have the value of your device's unique Id. If you added like so: change it to either an emailId or nil.
Please check Paypal SDK Documentation
Mike from PayPal here. We're in the process of deprecating the old MPL library. As you point out, it does call [UIDevice uniqueIdentifier].
The PayPal iOS SDK should be safe - other apps are using it, and it does not call [UIDevice uniqueIdentifier]. We'll be maintaining this version going forward and adding new features, so it should be a much nicer experience for your customers.
As you correctly point out, the PayPal iOS SDK is only available to US businesses. We're working on expanding support to non-US countries, and should hopefully have an update soon!
Update: the new iOS SDK (version 2.0.0) without references to uniqueIdentifier is here: https://github.com/paypal/sdk-packages/blob/gh-pages/MPL/PayPalMPL_2-0-0-iPhone_DevelopersPackage.zip