5

SFAuthorizationPluginView を使用してユーザーに UI を表示する Authorization プラグインを開発しました。この例は、Apple が提供する「古い」 NameAndPassword の例に基づいています。

この認証プラグインを使用して、カスタム ビューを使用してセッションのロックを解除します (authorizationdb の「system.login.screensaver」認証を更新しました)。これは、Yosemite の最後の更新までうまく機能していました。Yosemite 以降、ユーザーがセッションにログインした後、SFAuthorizationPluginView が閉じなくなりました。次のようにして、ウィンドウを強制的に閉じるように例を更新できます。

// confirm that we have authorized the user
[self callbacks]->SetResult ([self engineRef], kAuthorizationResultAllow);

// close the window
NSView* v = [self viewForType:SFViewTypeCredentials]; 
NSWindow* w = [v window]; 
[w close];

ユーザーがログインすると (ユーザーを承認した後)、SFAuthorizationPluginView は適切に閉じられますが、バックグラウンドで何かがアクティブなままであり、ユーザーはセッションでフォーカスを持っていません (ユーザーは何かを選択したり、テキスト編集に書き込むことはできません)。例)。再びフォーカスを得るには、SecurityAgent を手動で強制終了する必要があります。(システムは 30 秒後に SecurityAgent を自動的に強制終了するように見えることに注意してください)。

次のページで、Apple の NameAndPassword 認証プラグイン サンプルの修正された 2014 バージョンを見つけましたが、Yosemite でも同じ問題に直面しています: Apple の NameAndPassword 認証プラグイン サンプルの修正された 2014 バージョン

Yosemite がリリースされるまで、このコードは正常に機能していました。

同様の問題を実験している人はいますか?この問題を解決するためのアイデアやアドバイスはありますか?

4

1 に答える 1

1

ウィンドウを閉じる代わりに、didDeactivate メソッドを上書きして呼び出しを追加する必要があります。

[self didDeactivate];

SFAuthorizationPluginView クラスで、結果を ALLOW に設定した後。

Apple はドキュメントを更新しました。もう一度お読みください。1 年前に、多くの時間と労力を節約できる優れたガイドラインがいくつかあります。

于 2014-11-27T10:19:44.783 に答える