I am Developing an iOS Application, and for API calling I am using NSURLSession
, but my application was rejected from app store and Apple saying
" Please revise your app and test it on a device while connected to an IPv6 network (all apps must support IPv6) to ensure that it runs as expected."
I am also using Reachability
version 2.0 beta for network connection check, but I am not getting, why apple rejected my app while I am using NSURLSession
and NSURLSession
already support IPv6
network.
Here is my code
internetCheck()
if reachability!.isReachable() {
dispatch_async(dispatch_get_main_queue()) {
let token: NSString!
let urlPath: NSURL!
if provider .isEqualToString("No"){
urlPath = NSURL(string: kAPI_SERVERBASEURL + (url as String))
}
else{
urlPath = NSURL(string: kAPI_SERVERBASEURLSEARCHPROVIDER + (url as String))
}
print("URL Called sucess: \(url)")
var postJsonData = NSData()
var jsonString = NSString()
do {
postJsonData = try NSJSONSerialization.dataWithJSONObject(dictRequest, options:[])
jsonString = NSString(data: postJsonData, encoding: NSUTF8StringEncoding)!
NSLog("request - %@", jsonString);
// do other stuff on success
} catch {
print("JSON serialization failed: \(error)")
}
let request = NSMutableURLRequest(URL: urlPath);
request.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData
request.HTTPShouldHandleCookies = false
request.timeoutInterval = 120 ;
request.HTTPMethod = "POST";
if NSUserDefaults.standardUserDefaults().valueForKey(kAccessToken) != nil{
token = NSUserDefaults.standardUserDefaults().valueForKey(kAccessToken) as! NSString
//token = "tk_1vNoEoZRxJwY"
//request.setValue("\(token)", forHTTPHeaderField: "access_token")
request.setValue("\(token)", forHTTPHeaderField: "ACCESS-TOKEN")
}
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.HTTPBody = postJsonData
var task: NSURLSessionTask? = nil
let session = NSURLSession.sharedSession()
task = session.dataTaskWithRequest(request) { (data:NSData?, response:NSURLResponse?, error:NSError?) -> Void in
// self.hideNetworkActivity()
if((error) != nil) {
print(error!.localizedDescription)
let responseObj=ResponseObj()
if response==nil {
} else {
let responseStatus = response! as! NSHTTPURLResponse
responseObj.responseCode = responseStatus.statusCode
}
responseObj.responseErrMessage = kAlertMessage_ServerNotWorking
self.delegate?.performSelector(self.callbackSelector!, withObject:responseObj)
return
}else {
print("Succes:")
do {
let jsonData = try NSJSONSerialization.JSONObjectWithData(data!, options:NSJSONReadingOptions.MutableContainers ) as! NSDictionary
print("Value of JSON: \(jsonData)")
dispatch_async(dispatch_get_main_queue()) {
if jsonData.valueForKey("message") as! String == "Session expired."{
AppDelegate().appDelegate().hideHudViewSuccess()
let alert = UIAlertController(title: "", message:jsonData.valueForKey("message") as? String, preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "OK", style: .Default, handler: { action in
AppDelegate().appDelegate().logout()
}))
self.delegate!.presentViewController(alert, animated: true, completion: nil)
}
return
}
var responseObj=ResponseObj()
//Changes if response code is 605 it is Token not found in that case view will navigate to Home screen
responseObj = try! responseObj.objectFormat(jsonData)
self.delegate?.performSelector(self.callbackSelector!, withObject:responseObj)
dispatch_async(dispatch_get_main_queue()) {
AppDelegate().appDelegate().hideHudViewSuccess()
}
return
} catch {
print("JSON Error: \(error)")
let responseObj=ResponseObj()
responseObj.responseErrMessage = kAlertMessage_ServerNotWorking
self.delegate?.performSelector(self.callbackSelector!, withObject:responseObj)
return
}
}
}
task!.resume()
}
}else{
dispatch_async(dispatch_get_main_queue()) {
print("URL Called failer: \(url)")
let responseObj=ResponseObj()
responseObj.responseErrMessage = kAlertMessage_InternetNotAvailable
self.delegate?.performSelector(self.callbackSelector!, withObject:responseObj)
return
}
Please Help me. Thanks in advance.