Basic認証周り
didReceiveAuthenticationChallenge でchallenge.protectionSpace.authenticationMethodがNSURLAuthenticationMethodHTTPBasicなものが飛んでくる。
completionHandlerにNSURLCredentialでinitWithUserでユーザ名とパスワードを入れてNSURLCredentialPersistenceForSessionで呼んでやらないといけない。
問題はmainスレッドでやってくるのにcompletionHandlerを呼ばないでリターンしたと怒られるという矛盾した動きをするところ‥。
ずっとalertViewControllerでpresentViewControllerしてエラーでおこられていたが、
カスタムビューを作って、画面全体に貼り付けて認証画面を作った(presentViewControllerしない)らうまくいった。
ちなみに、completionHandlerは保持しておいて、認証画面を出そうとしているのにまだcompletionHandlerがよばれていないときはNSURLSessionAuthChallengePerformDefaultHandlingして解消してやるのが決めてだったのかもしれない。
ちなみにauthenticationMethodがそれ以外の場合はchallenge.protectionSpace.serverTrustのNSURLSessionAuthChallengeUseCredentialでcompleteしていた。 これも頻繁に飛んできた。
このあたりの動きが謎すぎて驚いた。