libspotify 导致 Apple App Store 拒绝
Posted
技术标签:
【中文标题】libspotify 导致 Apple App Store 拒绝【英文标题】:libspotify causing Apple App store rejection 【发布时间】:2013-05-02 06:24:35 【问题描述】:从 5 月 1 日起,Apple 似乎收紧了应用商店的提交。我有一个使用 Spotify 的应用,并已多次被 App Store 接受。在最近的更新中,该应用因以下原因被拒绝...
非公开 API 使用: 不允许应用访问 UDID,并且不得使用 UIDevice 的 uniqueIdentifier 方法。请更新您的应用和服务器,以将用户与 ios 6 中引入的供应商或广告标识符相关联。
在 libspotify 上执行以下操作
strings libspotify | grep uniqueIdentifier
返回了 3 个 uniqueIdentifier 实例。另一篇帖子指出,这可能是由于 openSSL 而可能与 UDID 无关。但是,Apple 拒绝了该代码。有解决办法吗?
【问题讨论】:
这个问题似乎是题外话,因为它是关于 libspotify 本身的一些错误或问题。更适合将其发布到他们的问题跟踪器等。 【参考方案1】:这是一个 Cr4zY 快速修复,仅当您真的很着急时才使用(就像我现在一样,Ship or Die!)...
使用 0xED http://www.suavetech.com/0xed/ 之类的工具将libspotify
二进制文件中的uniqueIdentifier
部分更改为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
【讨论】:
等不及了,试了一下,看起来效果很好。应用提交即通过扫码。【参考方案2】:一个热修复已经发布,移除了 uniqueIdentifier 的使用:
http://devnews.spotify.com/2013/05/16/libspotify-12-ios-hot-fix/
【讨论】:
【参考方案3】:免责声明:我为 Spotify 工作
我们已意识到此问题,并正在努力为 iOS 制作一个热修复程序,以消除对 UDID 访问的需要。坚持住!
编辑:热修复已发布!在http://developer.spotify.com/technologies/libspotify 获取它。 cocoalibspotify 的相应版本即将推出,但同时它可以轻松更改以支持不同版本号的 libspotify。
【讨论】:
这个修复会被合并到 cocoalibspotify 中吗? 您知道何时发布此修复程序吗? 不确定;留意 github 页面或 ping Dan(他是维护者)。在最坏的情况下,请查看下面@epatel 发布的黑客攻击。 @NikReiman 这不是 CocoaLibSpotify 的问题,而是 iOS 的 libspotify 问题。 Daniel 也是 libspotify 的管理员吗?此外,下面的 hack 指出 libspotify 确实使用了 -uniqueIdentifier,这很糟糕。我以为是因为openssl。 热修复已发布!有关详细信息,请参阅开发者页面。以上是关于libspotify 导致 Apple App Store 拒绝的主要内容,如果未能解决你的问题,请参考以下文章
Apple Cached Service 导致 iPhone app store无法下载程序
Apple内购(IAP)恢复购买产品在网络问题导致超时情况下的处理
Apple内购(IAP)恢复购买产品在网络问题导致超时情况下的处理
Apple内购(IAP)恢复购买产品在网络问题导致超时情况下的处理
Apple ResearchKit 中的额外本地化是不是会导致 iOS App Store 错误地认为我们的应用已针对许多额外语言进行了本地化?