gpt4 book ai didi

ios - 插件返回后 Cordova View 无响应

转载 作者:可可西里 更新时间:2023-11-01 03:58:57 25 4
gpt4 key购买 nike

我正在尝试使适用于 iOS 的 auth0 锁与 cordova 一起使用。它似乎有效,除了我在插件完成后关闭 View 时做错了什么。它被解雇了,但我无法再与 cordova View 进行交互。它变得 react 迟钝。

插件代码如下:

@implementation lockPlugin

-(void)init:(CDVInvokedUrlCommand*)command {

A0Lock *lock = [A0Lock sharedLock];

A0LockViewController *controller = [lock newLockViewController];
controller.onAuthenticationBlock = ^(A0UserProfile *profile, A0Token *token) {

CDVPluginResult* result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK
messageAsDictionary:@{
@"idToken":token.idToken,
@"refreshToken":token.refreshToken,
@"tokenType":token.tokenType,
@"accessToken":token.accessToken,
@"email":profile.email
}];

[self.commandDelegate sendPluginResult:result callbackId:command.callbackId];

[self.viewController dismissViewControllerAnimated:YES completion:nil];

};
[lock presentLockController:controller fromController:self.viewController];

}
@end

最佳答案

我不得不承认您的代码看起来不错,而且我在 Google 上也找不到任何问题。我确实找到了一些关于竞争条件的引用资料,这让我想到了最新也是最后的想法......

dismissViewControllerAnimated 是从 CDVPluginResult 调用的,它引用了 CDVPluginResult.viewController 而不是原始的 viewController。 Action 本身是动画的,这意味着需要一段时间,到那时,引用为零。或者,您似乎不应该从 block 中调用 dismiss,因为它不是 UI 线程。 This似乎支持我的第二个理论。尝试做

dispatch_async(dispatch_get_main_queue(), ^{
[self.viewController dismissViewControllerAnimated:YES completion:nil];
});

============================================= ==============================

它起作用的事实很奇怪。您将锁定变量放在 init 方法和 Auth0 for iOS docs 中的本地上下文中说你应该“将它作为一个强大的属性保留在你的 AppDelegate 中......只要你需要它就让它保持活力。”由于它是 init 中的局部变量,因此应在方法终止后立即释放它。

也许 session 检查每 x 秒进行一次,并且应用有时有足够的宽限期来工作和加载新屏幕。

关于ios - 插件返回后 Cordova View 无响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37277340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com