5

サーバーから (AWS 経由で) 提供された開発者の資格情報をサンプル ID プロバイダーに返す方法を理解するのに苦労しています。

refreshExampleIdentityProvider クラスのメソッド内でこれを同期的に行う必要があるようです。AFNetworking を使用してリクエストを作成していますが、これは非同期GETリクエストです。IdentityProvider の更新メソッドに対してこれを同期的に行うにはどうすればよいですか?

Swift では次のようになります。

class ExampleIdentityProvider: AWSAbstractIdentityProvider  {
    var newToken: String!

    override var token: String {
        get {
            return newToken
        }
        set {
            newToken = newValue
        }
    }

    override func getIdentityId() -> BFTask! {
        if self.identityId != nil {
            return BFTask(result: self.identityId)
        }else{
            return BFTask(result: nil).continueWithBlock({ (task) -> AnyObject! in
                if self.identityId == nil {
                    return self.refresh()
                }
                return BFTask(result: self.identityId)
            })
        }
    }

    override func refresh() -> BFTask! {
        return BFTask(result: nil).continueWithBlock({ (task) -> AnyObject! in
            let result =  AFNETWORKING REQUEST FOR CREDENTIALS TO MY SERVER
            self.identityId = result.identityId
            self.token = result.token

            return BFTask(result: self.identityId)
        })
    }
}
4

3 に答える 3