iOS 生物识别,如何从 C++ 创建 LAContext 实例?

iOS biometrics, how to create LAContext instance from C++?

我正在尝试通过 C++ 代码库对 iOS 实施生物识别身份验证。这里是 one example.

为了实现这一点,我需要使用 LAContext obj-c API。但是,当我尝试从 C++ 初始化 class 时,出现 pointer/reference 错误:

// Cannot initialize a variable of type 'LAContext *__strong' with an rvalue of type 'LAContext'
LAContext* authContext = LAContext();

有什么办法可以实现吗?或者这个结构只能从 Obj-c 获得吗?

编辑 1:

我的文件是在 Obj-C++ 中,所以理论上我应该能够混合使用 C++ 和 Obj-C 代码,但是当我尝试编写一个 Obj-C 函数来分配 LAContext 对象时,我得到了一个丢失的符号错误:

-(bool)biometricsAvailable {
    LAContext *myContext = [[LAContext alloc] init];
    NSError *authError = nil;
    return true;
}

在编译步骤中抛出此错误:

Undefined symbol: _OBJC_CLASS_$_LAContext

XCode 本身在编辑文件时不会显示任何错误,只有在我尝试 build/compile 应用程序时才会发生。

事实证明,问题不在于混合使用 C++ 和 Obj-C 代码,而是在于我的库通过 cocoapods 链接并且缺少 LocalAuthentication 框架。

我需要补充:

s.frameworks = "LocalAuthentication" 

到 podspec 并创建一个 LAContext 实例工作得很好。