2016-05-17 4 views
6

リターンをプラグインした後に応答しなく見ます。プラグインが完了した後で私がビューを閉じるときに間違ったことをしていることを除いて、動作するようです。それは解雇されますが、私はもはやコードバの視点と対話できません。それは応答しなくなります。ここでコルドバは、私がコルドバとiOSの作業のためauth0ロックを作るしようとしている

は、プラグインのコードです:

@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 
+0

あなたはコルドバのための代わりにAuth0のiOS用Auth0を使用しました。私は、ネイティブのiOSにコルダバの例を見つけることができず、そこにいくつかの問題があるかもしれません。なぜこのオプションを選んだのですか? –

+0

@RoyFalkログインのためのネイティブなルック&フィールを持ちたいと思っていました。奇妙なことは、時にはうまくいくということです。 –

+0

Xcodeでプロジェクトを開くと、コンソールにメッセージが表示されますか? – jcesarmobile

答えて

1

私はあなたのコードがよさそうだと私はそれを持つか、Googleで何かを見つけることができない認めざるを得ません。私は競合状態にいくつかの参照を見つけました。最新の最後のアイデアに私をもたらします。

dismissViewControllerAnimatedは、元のviewControllerではなくCDVPluginResult.viewControllerを参照してCDVPluginResultから呼び出されます。アクションそのものはアニメーション化されていますが、それは時間がかかります。その時までに、参照はゼロになります。また、UIスレッドではないので、ブロックからの切断を呼び出すべきではないようです。 This私の第2の理論を支持しているようです。

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

=========================================をやってみてください====================================

それが動作するという事実は、奇妙です。ロック変数をinitメソッド内のローカルコンテキストに配置し、Auth0 for iOS docsは「AppDelegateを強力なプロパティとして保持する必要がある限り、それを生かしておく」と言います。これはinitのローカル変数であるため、メソッドが終了すると即座に解放されます。

は、おそらく、セッションのチェックはx秒ごとに行われ、アプリが時々仕事と新しい画面をロードするのに十分な猶予期間があります。

+0

私はトークンを取得するためにプラグインを使用しており、コードワに結果を送信します。私はトークンを取得し、それがすべて動作するので、認証は問題ではありません。私が抱えている問題は、正しく見解を却下することです。 –

+0

これは機能しました。私はUINavigationControllerを追加して、lockControllerを提示しなければなりませんでした。ありがとう! –

+0

ちょうど明らかに、UIスレッドからの却下は機能しましたか? –

関連する問題