越狱检测机制由于用户设备上安装的应用程序而给出误报

问题描述 投票:0回答:1

开发团队实施了越狱检测机制。但我们的一位客户报告说,他的手机从未越狱过,但他仍然无法运行我们的应用程序。 经调查,我们发现客户端已从应用商店安装了“La Terminal - SSH Client”应用程序。这是导致这个问题的原因。卸载此应用程序后,我们公司的应用程序运行良好。

越狱代码:

func isDeviceJailBroken() -> Bool {
if UIDevice.current.isSimulator { return false }
let appNames = ["cydia",
                "Sileo",
                "Icy",
                "MxTube",
                "RockApp",
                "blackra1n",
                "SBSettings",
                "FakeCarrier",
                "WinterBoard",
                "IntelliScreen",
                "loader",
                "FlyJB",
                "Zebra",
                "WinterBoard",
                "Snoop-itConfig",
                "Terminal"]
for appName in appNames {
    if UIApplication.shared.canOpenURL(URL(string: "\(appName)://")!) {
        return true
    }
}
return false
}

我认为这个 SSH 客户端应用程序的捆绑 ID 中有“终端”一词。也许这就是它引起问题的原因。 所以我下载了另一个应用程序“Beam Terminal”,它的捆绑 ID 中有 Terminal 一词。但这次我们公司的应用程序可以运行了。

La Terminal - SSH Client  (Error)
https://itunes.apple.com/lookup?id=1629902861
bundleId: com.xibbon.LaTerminal

Beam Terminal   (No Error)
https://itunes.apple.com/lookup?id=603488666
bundleId: com.beamwallet.BeamTerminal

谁能告诉我这里的图案是什么?

ios terminal jailbreak
1个回答
0
投票

首先,这些不是“应用程序名称”。它们是 URL 方案。我假设您的开发团队已经收集了上述每个应用程序的 URL 方案,或者他们只是插入了应用程序名称,希望应用程序名称恰好与应用程序的 URL 方案匹配?很难确定,因为他们已经将“应用程序名称”与“url 方案”混为一谈,这是两个截然不同的东西。

无论如何,有问题的应用程序似乎已将上述“应用程序名称”之一注册为其 URL 方案,这就是为什么

canOpenURL()
返回
true

© www.soinside.com 2019 - 2024. All rights reserved.