看来 Apple 从 5 月 1 日起收紧了应用程序商店提交。我有一个使用 Spotify 的应用程序,并且已多次被 App Store 接受。在最近的更新中,该应用程序因以下原因被拒绝......
非公开API使用:
应用程序不允许访问UDID,并且不得使用UIDevice的uniqueIdentifier方法。请更新您的应用程序和服务器,以便将用户与 iOS 6 中引入的供应商或广告标识符相关联。
在 libspotify 上执行以下操作
strings libspotify | grep uniqueIdentifier
返回了 3 个 uniqueIdentifier 实例。另一篇帖子指出,这可能是由于 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)