3

从 5 月 1 日起,Apple 似乎收紧了应用商店的提交。我有一个使用 Spotify 的应用,并已多次被 App Store 接受。在最近的更新中,由于以下原因,该应用程序被拒绝...

非公开 API 使用:
不允许应用访问 UDID,不得使用 UIDevice 的 uniqueIdentifier 方法。请更新您的应用程序和服务器,以将用户与 iOS 6 中引入的供应商或广告标识符相关联。

在 libspotify 上执行以下操作

strings libspotify | grep uniqueIdentifier

返回 3 个 uniqueIdentifier 实例。另一篇帖子指出,这可能是由于 openSSL 而可能与 UDID 无关。但是,Apple 拒绝了该代码。有解决办法吗?

4

3 回答 3

4

这是一个Cr4zY快速修复,仅在您真的很着急时使用(就像我现在一样,Ship or Die!) ...

使用 0xED http://www.suavetech.com/0xed/之类的工具将二进制文件中的uniqueIdentifier部分更改为. (注意!必须有相同的长度,否则会很硬!!!)libspotifyuniqueXdentifier

UIDevice然后在您的项目中为 ie添加一个类似这样的类别方法(使用与更改为相同的名称)

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
于 2013-05-10T22:07:56.877 回答
2

A hot-fix has been released, removing the usage of uniqueIdentifier:

http://devnews.spotify.com/2013/05/16/libspotify-12-ios-hot-fix/

于 2013-05-16T14:36:44.827 回答
2

免责声明:我为 Spotify 工作

我们已经意识到这个问题,并正在努力为 iOS 制作一个热修复程序,以消除对 UDID 访问的需要。抱紧!

编辑:热修复出来了!在http://developer.spotify.com/technologies/libspotify 获取它。cocoalibspotify 的相应版本即将推出,但与此同时,它可以轻松更改以支持不同版本号的 libspotify。

于 2013-05-08T09:36:11.277 回答