罪魁祸首是(鼓):Instabug 框架。他们在他们的市场软件页面上告诉你,他们允许用户在反馈撰写期间做音频笔记。所以我已经添加NSMicrophoneUsageDescription
到应用程序列表中来解释这一点。
请注意,instabug 使用了很多苹果 API
架构 arm64 的未定义符号:(根据该框架声称的功能,我删除了一些似乎合法的符号,并留下了我在市场软件中看不到的任何声明)
“_AVMakeRectWithAspectRatioInsideRect”,引用自:InstabugHost_lto.o 中的 +[IBGIAMImageAttachmentView sizeForContent:forWidth:]
“ OBJC_CLASS $_CTTelephonyNetworkInfo”,引用自:InstabugHost_lto.o 中的 objc-class-ref
“_AVNumberOfChannelsKey”,引用自:-[IBGVoiceNoteManager startRecording] instabugHost_lto.o
“_CTRadioAccessTechnologyHSDPA”,引用自:InstabugHost_lto.o 中的 +[IBGInspector getCarrier]
“_CTRadioAccessTechnologyGPRS”,引用自:InstabugHost_lto.o 中的+[IBGInspector getCarrier]
“_CTRadioAccessTechnologyWCDMA”,引用自:InstabugHost_lto.o 中的 +[IBGInspector getCarrier]
“_CTRadioAccessTechnologyEdge”,引用自:InstabugHost_lto.o 中的 +[IBGInspector getCarrier]
“_CTRadioAccessTechnologyCDMA1x”,引用自:InstabugHost_lto.o 中的+[IBGInspector getCarrier]
“_CTRadioAccessTechnologyCDMAEVDORevA”,引用自:InstabugHost_lto.o 中的 +[IBGInspector getCarrier]
“_CTRadioAccessTechnologyCDMAEVDORevB”,引用自:InstabugHost_lto.o 中的 +[IBGInspector getCarrier]
“_CTRadioAccessTechnologyLTE”,引用自:InstabugHost_lto.o 中的 +[IBGInspector getCarrier]
“ OBJC_CLASS $_AVURLAsset”,引用自:
InstabugHost_lto.o中的 OBJC_CLASS $_IBGAsset
“ OBJC_METACLASS $_AVURLAsset”,引用自:
InstabugHost_lto.o中的 OBJC_METACLASS $_IBGAsset
“_CTRadioAccessTechnologyCDMAEVDORev0”,引用自:InstabugHost_lto.o 中的 +[IBGInspector getCarrier]
“_CTRadioAccessTechnologyHSUPA”,引用自:InstabugHost_lto.o 中的 +[IBGInspector getCarrier]
ld:未找到架构 arm64 的符号
因此,在这个后斯诺登时代,我不得不想知道为什么它需要核心电话。
所以我要说的是,如果您没有第三方框架的来源,您必须向用户披露您的应用程序本身没有使用麦克风或摄像头,以便用户可以选择拒绝访问那个设备。
由于您的应用程序利用了一些安全漏洞,您不希望有一天出现在新闻中。
未解决:精心设计的麦克风使用描述并不能完全解决安全问题,但万一您的应用确实使用了麦克风并且第 3 方框架(认为它)也需要它。您必须编写一份冗长的描述来概述风险。
在这里,信用披露可以派上用场,让用户了解您所依赖的第 3 方代码。给予应得的功劳:^)
如果您像我一样懒惰并且从未阅读过 ios 安全白皮书,这里有一个简短的https://developer.apple.com/videos/play/wwdc2016/705/
如果您不想完整观看视频:在 19:00 左右,演讲者明确告诉您,您不能对这些描述偷懒(您应对可能滥用用户授予权限的第 3 方代码负责你的应用程序。一定要喜欢二进制框架;^)