私はParse-ServerをバックエンドとRxSwiftとして使用するApple TVアプリケーションで作業しています。私はテレビストリーミングアプリケーションの認証システムと同様の認証システムを設定しようとしています。RxSwiftとParse-Serverでのポーリング
今私はコード、デバイスID、およびセッショントークン列を持つ認証データベース内にAuthenticationCodeオブジェクトを持っています。私はオブジェクトのフェッチを5秒ごとに実行するためにRxSwiftの間隔を使用しようとしており、セッショントークン列が記入されているかどうかを確認しています。ここで
コードです:
func poll(authorizationCode: AuthorizationCode) -> Observable<AuthorizationCode> {
return Observable<Int>.interval(5, scheduler: MainScheduler.instance).flatMap({ _ in
return Observable<AuthorizationCode>.create { observer -> Disposable in
authorizationCode.fetchInBackground(block: { (authorizationCode, error) in
if let authorizationCode = authorizationCode as? AuthorizationCode {
observer.onNext(authorizationCode)
if authorizationCode.sessionToken != nil {
observer.onCompleted()
}
} else if let error = error {
observer.onError(error)
}
})
return Disposables.create()
}
})
}
は、私がonNextイベントで、私は、オブジェクトをフェッチし、私はセッションコードが存在する場合のシーケンスを終了するたびに発光しています。
このコードで問題が発生しているのは、セッショントークンが記入され、onCompletedが呼び出された後でも、タイマーはまだ起動し、サブスクライバはonCompletedイベントを取得しないということです。
これに関するお手伝いがあります。
また、どうやってこれをやっていけばいいか教えてください。
私はParse-Serverライブクエリを使用しますが、現在はtvOSをサポートしていません。
ありがとうございました。
を私はそれらの両方を試してみましたが、私はそれぞれにエラーが発生します。オプション1の場合、引数 '引数なしの呼び出しに引数が渡されました 'が表示され、オプション2の場合'タイプの値 'エラーが発生します。Observable'にメンバー 'dispose''がありません –
RPK
もちろん間違いです。 'poll'コールを書いてください。 – XFreire
私は自分の答えを編集して、それを理解するために[簡単な要点](https://gist.github.com/XFreire/62af2b8121dca1db9c9e0a017de47c40)を作成しました。 – XFreire