如何允许我的 iOS 应用程序向服务器发送信息?

Posted

技术标签:

【中文标题】如何允许我的 iOS 应用程序向服务器发送信息?【英文标题】:How do I allow my iOS app to send information to a server? 【发布时间】:2016-11-10 01:18:53 【问题描述】:

我有一部未激活的 iPhone,因此没有蜂窝数据,但它支持 WiFi。我可以访问 Safari、slack 等。没问题。我正在制作一个试图将 JSON 包发送到服务器并等待服务器响应的应用程序。但是我做的这个应用好像连互联网都没有接触到。

此代码将返回 true:(google.com 只是一个示例 url)

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 包,但大多数只是让应用程序崩溃或没有响应。我输入了这段代码来演示应用程序在互联网连接方面所做的事情。我已更改 Info.plist 以允许任意加载并使用 WiFi。任何让它工作的东西都会有帮助。

【问题讨论】:

你使用的是http URL还是https URL? 我使用的是http,但是我已经在info.plist中添加了例外 【参考方案1】:

所以我做错了几件事。第一个是我在后台线程中更新 UI,导致崩溃。关于服务器连接,右键单击 info.plist 并将其编辑为 xml 文档并以这种方式添加站点例外。

【讨论】:

以上是关于如何允许我的 iOS 应用程序向服务器发送信息?的主要内容,如果未能解决你的问题,请参考以下文章

当特定类型的推送通知到达时,如何不允许 iOS 启动应用程序?

微信小程序客服发送小程序卡片功能?

如何使弹簧安全允许使用休息服务

微信公众号多客服功能的实现--向指定客服发送信息

F4 workerman 长连接绑定用户id实现一对一客服聊天

如何向我的苹果 IOS 用户发送弹出警报?