私はiPhoneを持っていないので携帯データはありませんが、WiFi対応です。私はSafariにアクセスすることができます、スラックなど問題なし。私は、JSONパッケージをサーバーに送信しようとしているアプリケーションを作成しており、サーバーの応答を待っています。しかし、私が作っているアプリはインターネットに触れていないようだ。 (google.comは一例URLです)iOSアプリケーションからサーバーに情報を送信する方法を教えてください。
func isInternetAvailable() -> 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)
}
このコードはfalseを返しますが:
func checkInternet(flag:Bool, completionHandler:@escaping (_ internet:Bool) -> Void)
{
UIApplication.shared.isNetworkActivityIndicatorVisible = true
let url = NSURL(string: "http://www.google.com/")
let request = NSMutableURLRequest(url: url! as URL)
request.httpMethod = "POST"
request.cachePolicy = NSURLRequest.CachePolicy.reloadIgnoringLocalAndRemoteCacheData
request.timeoutInterval = 10.0
NSURLConnection.sendAsynchronousRequest(request as URLRequest, queue:OperationQueue.main, completionHandler:
{(response: URLResponse?, data: Data?, error: Error?) -> Void in
UIApplication.shared.isNetworkActivityIndicatorVisible = false
let rsp = response as! HTTPURLResponse?
self.OutputTextField.text = self.OutputTextField.text + ", \(rsp)"
completionHandler(rsp?.statusCode == 200)
} as! (URLResponse?, Data?, Error?) -> Void)
}
私はJSONを送信するために多くの方法を試してみました。このコードは、trueを返します
ほとんどの場合、アプリをクラッシュさせたり、応答を与えたりしないでください。私は、インターネット接続に関してアプリケーションが何をしているのかを実証するために、このコードを書いています。 Info.plistを変更して、任意の負荷を許可し、WiFiを使用するようにしました。これを動作させるための何かが役に立つでしょう。
http URLまたはhttps URLを使用していますか? – Windindi
私はhttpを使用していますが、私はinfo.plistに例外を追加しました – Michael