非常に遅いインターネット接続がある場合は、問題の処理に問題があります。まず、説明しましょう。遅い(デバイスが接続されている場合だけではない)を確認するSwift iOSでのインターネット接続9.3
public class Reachability
{
class func isConnectedToNetwork() -> Bool
{
var zeroAddress = sockaddr_in(sin_len: 0, sin_family: 0, sin_port: 0, sin_addr: in_addr(s_addr: 0), sin_zero: (0, 0, 0, 0, 0, 0, 0, 0))
zeroAddress.sin_len = UInt8(sizeofValue(zeroAddress))
zeroAddress.sin_family = sa_family_t(AF_INET)
let defaultRouteReachability = withUnsafePointer(&zeroAddress) {
SCNetworkReachabilityCreateWithAddress(kCFAllocatorDefault, UnsafePointer($0))
}
var flags: SCNetworkReachabilityFlags = SCNetworkReachabilityFlags(rawValue: 0)
if SCNetworkReachabilityGetFlags(defaultRouteReachability!, &flags) == false {
return false
}
let isReachable = flags == .Reachable
let needsConnection = flags == .ConnectionRequired
return isReachable && !needsConnection
}
デバイスがインターネットに接続され、接続が高速で安定しているときに、すべてが正常に動作します:デバイスはつまりハンドル、インターネットや機能に接続されていないとき、私は扱うことができます。デバイスがインターネットに接続されていない場合、私は接続する必要があるという警告を受け取り、それも処理されます。
問題は、私が接続されていて、インターネットが16 kbpsのように非常に遅い場合です。 Alamofireを通じて多くのことが要求されており、その速度でダウンロードするには数年かかる。私はそれが私のアプリを停止し、最終的にそれをクラッシュさせなかった場合でも、私は気にしません。
私はこの機能を試してみた:
class func isInternetActive(input: String, completion: (result: String) -> Void)
{
let qualityOfServiceClass = QOS_CLASS_BACKGROUND
let backgroundQueue = dispatch_get_global_queue(qualityOfServiceClass, 0)
dispatch_async(backgroundQueue, {
Alamofire.request(.GET, "http://www.google.hr").response
{ response in
if response.3 != nil
{
print("NOK")
completion(result: "NOK")
}
print("OK")
completion(result: "OK")
}
})
}
また、私は私のソーシャルメディアviewcontrollersのためのデータをフェッチするAlamofireを使用していますし、Twitterのために私はファブリックを使用しています。
私は次のようにしたいと思います:データを取得してみてください。 3〜4秒以内にそれらを取得できない場合。要求を停止します。ですから、数秒以内にイメージをダウンロードできない場合は、インターネットに接続していないときと同じように、imageViewを白または空にしてください。
ここをクリックしてください:http://stackoverflow.com/questions/33865843/swift-2-1-alamofire-timeout-method and http://stackoverflow.com/questions/36626075/handle-timeout-with- alamofire – Feldur
ナー、これらのものは接続をチェックするだけです。私の場合は接続は正常ですが、接続は遅いです – Stjepan