【问题标题】:libspotify causing Apple App store rejectionlibspotify 导致 Apple App Store 拒绝
【发布时间】: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 本身的一些错误或问题。更适合将其发布到他们的问题跟踪器等。

标签: spotify cocoalibspotify-2.0 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。
    • 热修复已发布!有关详细信息,请参阅开发者页面。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-31
    • 2016-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多