0

我的应用被 Apple 拒绝了,因为不知何故我的应用使用了私有 API。苹果说我的应用程序使用

框架:'/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation':CFHashBytes

我在代码中找不到任何东西,所以我搜索了 stackoverflow 并发现我可以使用 otool 或字符串。

使用字符串,我找到两个“哈希”调用(无论它们在哪里)并使用 nm,我得到以下输出:

nm 运动型\建筑师 | grep 哈希

0000000100077490 T __TFO16Sporty_Architect12ActivityTypeg9hashValueSi 0000000100056240 T __TFO16Sporty_Architect12RotationModeg9hashValueSi 0000000100064480 T __TFO16Sporty_Architect13DraggedSliderg9hashValueSi 000000010003e3a0 T __TFO16Sporty_Architect8FileTypeg9hashValueSi 000000010003d91​​0 T __TFO16Sporty_Architect9DateRangeg9hashValueSi 0000000100021360 T __TFO16Sporty_Architect9ModelModeg9hashValueSi U __TFSig9hashValueSi 00000001000777b0 T __TTWO16Sporty_Architect12ActivityTypes8HashableS_FS1_g9hashValueSi 00000001000562e0 T __TTWO16Sporty_Architect12RotationModes8HashableS_FS1_g9hashValueSi 0000000100064500 T __TTWO16Sporty_Architect13DraggedSliders8HashableS_FS1_g9hashValueSi 000000010003e9d0 T __TTWO16Sporty_Architect8FileTypes8HashableS_FS1_g9hashValueSi 000000010003e080 T__TTWO16Sporty_Architect9DateRanges8HashableS_FS1_g9hashValueSi 0000000100021500 T __TTWO16Sporty_Architect9ModelModes8HashableS_FS1_g9hashValueSi

我认为 U __TFSig9hashValueSi 是它,不是吗?但现在的问题......我怎样才能进一步缩小范围?

这超出了我的理解,为什么 Apple 提供了一个验证按钮,显示一切正常,并且一旦应用程序处于审核状态,它就会因为某些事情而被拒绝,这可以在编译时清楚地检测到(或至少在提交时)。

4

1 回答 1

2

如果您不使用任何外部 API 或框架,则 CFHashBytes 仅存在于 Swift 框架中。

我在两个应用程序中遇到了这个问题。我已将此消息发送到调解中心,现在两者都已获得批准:

“你好,

我认为有一个错误。唯一包含该非公共 API 的文件是 libswiftFoundation.dylib,它是 Swift 应用程序中使用的框架。Xcode 会自动使用它。请再检查一遍。

非常感谢。”

我希望这可以帮助你。

于 2017-01-10T10:39:48.693 回答