看起来苹果已经收紧应用程序商店盯着5月1日我有一个使用Spotify和已被接受进入App Store多次的应用程序提交。 在最近的一次更新,应用程序被拒绝,原因如下...
非公有制API的使用:
应用程序不允许访问UDID,不得使用的UIDevice的唯一标识符方法。 请更新您的应用程序和服务器在iOS 6中推出的卖方或广告标识的用户相关联。
这样做对libspotify以下
strings libspotify | grep uniqueIdentifier
返回UNIQUEIDENTIFIER的3个实例。 另一张贴指出,这可能是由于OpenSSL和可能无关UDID。 然而,苹果拒绝的代码。 是否有变通?
这里是一个Cr4zY速战速决,如果你是一个真正的匆忙只使用(像我现在,船舶,毋宁死!)...
使用像0xED工具http://www.suavetech.com/0xed/改变uniqueIdentifier
的部分libspotify
二进制像uniqueXdentifier
。 (注意!必须具有相同的长度,或会破难!)
然后添加一个类中的方法UIDevice
在您的项目即是这样的(使用相同的名称已更改为)
static NSString *alternativeUniqueIdentifier = nil;
#define DEFAULTS_KEY @"heartbreakridge" // "Improvise, adapt, overcome" - Clint Eastwood in DEFAULTS_KEY
@interface UIDevice (CrazyFix)
- (NSString *)uniqueXdentifier;
@end
@implementation UIDevice (CrazyFix)
- (NSString *)uniqueXdentifier
{
if (!alternativeUniqueIdentifier) {
@synchronized(self) {
alternativeUniqueIdentifier = [[NSUserDefaults standardUserDefaults] stringForKey:DEFAULTS_KEY];
if (!alternativeUniqueIdentifier) {
// XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX (capital hex)
CFUUIDRef uuidRef = CFUUIDCreate(kCFAllocatorDefault);
CFStringRef uuidStringRef = CFUUIDCreateString(NULL, uuidRef);
CFRelease(uuidRef);
alternativeUniqueIdentifier = [(NSString*)CFBridgingRelease(uuidStringRef) lowercaseString];
alternativeUniqueIdentifier = [alternativeUniqueIdentifier stringByReplacingOccurrencesOfString:@"-" withString:@""];
alternativeUniqueIdentifier = [NSString stringWithFormat:@"%@%@", [alternativeUniqueIdentifier substringToIndex:8], alternativeUniqueIdentifier];
[[NSUserDefaults standardUserDefaults] setValue:alternativeUniqueIdentifier forKey:DEFAULTS_KEY];
[[NSUserDefaults standardUserDefaults] synchronize];
}
}
}
return alternativeUniqueIdentifier;
}
@end
一个热修复已被释放,消除唯一标识符的用法:
http://devnews.spotify.com/2013/05/16/libspotify-12-ios-hot-fix/
声明:我工作的Spotify
我们已经注意到这个问题,并在作出烫针对iOS这消除了对UDID的访问需要工作。 请耐心等待!
编辑 :热修复程序是了! 在抓住它http://developer.spotify.com/technologies/libspotify 。 cocoalibspotify的相应版本即将上市,但在此期间,它可以很容易地改变以支持libspotify的不同的版本号。