2

非公开 API 使用:

不允许应用访问 UDID,并且不得使用 UIDevice 的 uniqueIdentifier 方法。请更新您的应用程序和服务器以将用户与 iOS 6 中引入的供应商或广告标识符相关联。如果源代码中的方法名称与上面列出的私有 Apple API 匹配,则更改您的方法名称将有助于防止此应用程序在以后的提交中被标记. 此外,请注意,上述一个或多个 API 可能位于您的应用程序随附的静态库中。如果是这样,它们必须被删除。

请帮助我如何避免他的问题。

问候约翰

4

3 回答 3

7

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

有你的答案。

从 5 月 1 日起,App Store 将不再接受访问 UDID 的新应用或应用更新。请更新您的应用和服务器,以将用户与 iOS 6 中引入的供应商或广告标识符相关联

资源

Apple现在阻止任何访问uniqueIdentifier. 用供应商或广告标识符UIDevice替换任何出现或使用OpenUDID

NSUUID *uuid = [[UIDevice currentDevice] identifierForVendor];
NSString *uuidString = [uuid UUIDString];

一些可能有帮助的 StackOverflow 问题:

如果你自己没用过uniqueIdentifier,那会是一个 SDK Library 调用它。通常来自 Mobclix、AdMob 或 Smaato 等广告网络。所有流行的广告网络都更新了 SDK,删除了uniqueIdentifier. 检查他们的网站以获取最新的 SDK。

更新

刚刚在评论中看到你正在使用PhoneGap,猜测你还没有更新到最新版本。

确保您使用来自http://phonegap.com/download/的最新版本 (2.7.0) (2013 年 4 月 30 日发布)

于 2013-05-08T20:12:49.033 回答
6

我遇到了同样的问题,Apple 给了我一些提示来找出使用“uniqueIdentifier”API 调用的地方。即使在二进制库中。

“虽然您可能已从您的应用程序中删除了对 UDID 的访问和使用,但无效的二进制消息表明您的应用程序使用或访问了 UDID。请检查您的源代码中是否出现任何“uniqueIdentifier”方法;这是返回设备的 UDID。

此外,如果您正在链接外部框架,例如广告库,这些第三方库可能正在访问和使用 UDID。我们鼓励您将您的库更新到最新版本并使用“nm”工具来确定库是否正在调用此方法。

有关“nm”工具的更多信息,请参阅 Xcode Tools 中“nm”工具的手册页:

https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/nm.1.html

此外,如果您无权访问库的源代码,则可以使用“strings”或“otool”命令行工具搜索已编译的二进制文件。“strings”工具可以输出库调用的方法列表,“otool -ov”将输出Objective-C类结构及其定义的方法。这些技术可以帮助您缩小有问题的代码所在的位置。”

希望能帮助到你

于 2013-05-13T04:21:59.573 回答
0

我正在使用这种方法来创建一个唯一标识符。

现在是不是不允许了。一个月前发布了我的应用程序的早期版本。

- (NSString *)uuid
{
    CFUUIDRef uuidRef = CFUUIDCreate(NULL);
    CFStringRef uuidStringRef = CFUUIDCreateString(NULL, uuidRef);
    CFRelease(uuidRef);
    return [(NSString *)uuidStringRef autorelease];
}

我还能用什么来创建唯一标识符。

干杯

谢恩

于 2013-06-18T05:22:22.523 回答