相关疑难解决方法(0)

我们如何以编程方式检测运行设备的iOS版本?

我想检查用户是否在低于5.0的iOS上运行应用程序并在应用程序中显示标签.

如何以编程方式检测用户设备上运行的iOS?

谢谢!

iphone cocoa-touch objective-c ios4 ios

288
推荐指数
7
解决办法
21万
查看次数

确定iOS设备是否支持TouchID而不设置密码

我目前正在开发一个iOS应用程序,使用户可以使用TouchID登录应用程序,但首先他们必须首先在应用程序内设置密码.问题是,要显示设置密码选项以启用TouchID登录,我需要检测iOS设备是否支持TouchID.

使用LAContext和canEvaluatePolicy(如此处的答案如果设备支持Touch ID),如果用户在其iOS设备上设置了密码,我可以确定当前设备是否支持TouchID .这是我的代码片段(我使用的是Xamarin,所以它在C#中):

static bool DeviceSupportsTouchID () 
{
    if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0))
    {
        var context = new LAContext();
        NSError authError;
        bool touchIDSetOnDevice = context.CanEvaluatePolicy(LAPolicy.DeviceOwnerAuthenticationWithBiometrics, out authError);

        return (touchIDSetOnDevice || (LAStatus) Convert.ToInt16(authError.Code) != LAStatus.TouchIDNotAvailable);
    }

    return false;
}
Run Code Online (Sandbox Code Playgroud)

如果用户尚未设置设备密码,则无论设备是否实际支持TouchID ,authError都将返回" PasscodeNotSet "错误.

如果用户的设备支持TouchID,我想在我的应用程序中始终显示TouchID选项,无论用户是否在其设备上设置了密码(我只是警告用户首先在他们的设备上设置密码).反之亦然,如果用户的设备不支持TouchID,我显然不想在我的应用程序中显示TouchID选项.

所以我的问题是,无论用户是否在其设备上设置了密码,是否有一种很好的方法可以始终如一地确定iOS设备是否支持TouchID?

我能想到的唯一解决方法是确定设备的体系结构(在确定iOS设备是32位还是64位时可以回答),因为只有具有64位体系结构的设备才支持TouchID.但是,我正在寻找是否有更好的方法来做到这一点.

先谢谢!:)

iphone ipad ios xamarin touch-id

21
推荐指数
3
解决办法
2万
查看次数

标签 统计

ios ×2

iphone ×2

cocoa-touch ×1

ios4 ×1

ipad ×1

objective-c ×1

touch-id ×1

xamarin ×1