アプリが動作しているときにいつでもインターネット接続をチェックするappdelegateの機能を実装したいと思います。私は、各クラスごとにインターネット接続をチェックしたいと思います。これは可能ですか?プロジェクトでAlamofireとSwiftyJsonも使用しています。アプリ全体のインターネット接続を確認する方法
答えて
SystemConfiguration
フレームワーク(デバイスの到達可能性を判断する)を使用して、そうすることができます。次に、以下の例のような素早いファイルを作成して、物事を清潔に保ちます。これにより、すべてのケースが処理されます。これは、インターネット、携帯電話、無線LANをチェックしません。
Connection.swiftが
import SystemConfiguration
protocol Utilities {
}
extension NSObject:Utilities{
enum ReachabilityStatus {
case notReachable
case reachableViaWWAN
case reachableViaWiFi
}
var currentReachabilityStatus: ReachabilityStatus {
var zeroAddress = sockaddr_in()
zeroAddress.sin_len = UInt8(MemoryLayout<sockaddr_in>.size)
zeroAddress.sin_family = sa_family_t(AF_INET)
guard let defaultRouteReachability = withUnsafePointer(to: &zeroAddress, {
$0.withMemoryRebound(to: sockaddr.self, capacity: 1) {
SCNetworkReachabilityCreateWithAddress(nil, $0)
}
}) else {
return .notReachable
}
var flags: SCNetworkReachabilityFlags = []
if !SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags) {
return .notReachable
}
if flags.contains(.reachable) == false {
// The target host is not reachable.
return .notReachable
}
else if flags.contains(.isWWAN) == true {
// WWAN connections are OK if the calling application is using the CFNetwork APIs.
return .reachableViaWWAN
}
else if flags.contains(.connectionRequired) == false {
// If the target host is reachable and no connection is required then we'll assume that you're on Wi-Fi...
return .reachableViaWiFi
}
else if (flags.contains(.connectionOnDemand) == true || flags.contains(.connectionOnTraffic) == true) && flags.contains(.interventionRequired) == false {
// The connection is on-demand (or on-traffic) if the calling application is using the CFSocketStream or higher APIs and no [user] intervention is needed
return .reachableViaWiFi
}
else {
return .notReachable
}
}
}
あなたがそれを使用することができますそして、しかし、あなたが好き:ここではありません、インターネットかどうかを確認するためのサンプルです。
if currentReachabilityStatus == .notReachable {
// Internet is offline
// show alert or do something.
}
しかし、私はまだすべてのクラスのコードを実装する必要がありますか? –
いいえ、プロジェクトに追加された迅速なファイルを作成してください。グローバルになります – Cliffordwh
このコードの意味は次のとおりです。 currentReachabilityStatus == .notReachable { //インターネットがオフラインです //警告を表示するか何かを実行します。 } –
ウルプロジェクトでこのクラスを追加します。あなたが欲しい、これまで次のように
import SystemConfiguration
open class Reachability {
class func isConnectedToNetwork() -> Bool {
var zeroAddress = sockaddr_in()
zeroAddress.sin_len = UInt8(MemoryLayout.size(ofValue: zeroAddress))
zeroAddress.sin_family = sa_family_t(AF_INET)
let defaultRouteReachability = withUnsafePointer(to: &zeroAddress) {
$0.withMemoryRebound(to: sockaddr.self, capacity: 1) {zeroSockAddress in
SCNetworkReachabilityCreateWithAddress(nil, zeroSockAddress)
}
}
var flags = SCNetworkReachabilityFlags()
if !SCNetworkReachabilityGetFlags(defaultRouteReachability!, &flags) {
return false
}
let isReachable = (flags.rawValue & UInt32(kSCNetworkFlagsReachable)) != 0
let needsConnection = (flags.rawValue & UInt32(kSCNetworkFlagsConnectionRequired)) != 0
return (isReachable && !needsConnection)
}
}
はどこにそれを使用します。
if (Reachability.isConnectedToNetwork() == true){
// Do what you want...
}
else{
//Show alert
}
- 1. オブザーバーを追加してアプリ全体のインターネット接続を確認する
- 2. インターネット接続の確認
- 3. androidのインターネット接続を確認する
- 4. iOSのインターネット接続を確認する
- 5. アプリを閉鎖してインターネット接続を確認する(コルドバ)
- 6. dagger 2のインターネット接続を確認する方法okhttp3
- 7. インターネット接続を常に確認する
- 8. Jquery - インターネット接続を確認する
- 9. アクティブなインターネット接続を確認する
- 10. Android:インターネット接続を確認する
- 11. バッチコマンドと「インターネット接続を確認する」
- 12. コードネーム:インターネット接続とサスペンドモードを確認する方法
- 13. UWPで有線インターネット接続を確認する方法は?
- 14. バックグラウンドで、インターネット接続、IOSを確認できるアプリ
- 15. Android - インターネット接続を確認して自動接続する
- 16. アプリケーション全体で定期的にインターネット接続をチェックする方法は?
- 17. 接続の確認方法
- 18. Androidスタジオでのインターネット接続の強さの入手方法/確認方法
- 19. IOS/Objective-C:インターネット接続を確認する最速の方法 - 2017
- 20. アップロード中にインターネット接続を確認する方法と、モバイルでダウンロード中です。
- 21. C2DM接続を確認する方法
- 22. Android:アクティブなインターネット接続を確認する最も効果的な方法は
- 23. インターネット接続が可能かどうかを確認する方法は?
- 24. xamarinフォームのインターネット接続の可否を確認する
- 25. Android:インターネット接続を確立
- 26. TFTP接続の接続状態を確認する方法は?
- 27. アプリケーションの開始時にインターネット接続を確認する
- 28. Javaでのインターネット接続を確認する
- 29. Ionic 2 - 各リクエストのインターネット接続を確認する
をあなたはこのためにAlamofireNetworkActivityIndicatorを使用することができ、【こちら】(のhttp:/ /stackoverflow.com/questions/41327325/how-to-check-internet-connection-in-alamofire/41327866#41327866)を回答してください。返信ありがとう。 –