2016-06-27 3 views
0

Я отправил свое приложение в AppStore, они отклонили его по следующей причине.Для Soap NSURLConnection, убедитесь, что ваше приложение поддерживает сети IPv6, так как требуется совместимость с IPv6.

Hello, 

     Thank you for providing this information. Upon further review, we were still unable to login to the app. 

     Please note that apps are reviewed on an IPv6 network. Please ensure that your app supports IPv6 networks, as IPv6 compatibility is required. 

     For information about supporting IPv6 Networks, refer to Supporting iPv6 DNS64/NAT64 Networks. 

     For a networking overview, please see About Networking. 

     Best regards, 

     App Store Review 

Я использую сервис SOAP Envelope, чтобы использовать его,

Вот мой код

@property(retain,nonatomic)NSString *xmlString; 

@property(nonatomic,retain)NSMutableData *webResponseData; 


-(void)method_GetUpcomingLotteries 
{ 

    NSString *soapMessage = [NSString stringWithFormat:@"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" 
          "<env:Envelope xmlns:env=\"http://www.w3.org/2003/05/soap-envelope\" xmlns:ns1=\"urn:Lottery.Intf-ILottery\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:enc=\"http://www.w3.org/2003/05/soap-encoding\">\n" 
          "<env:Body>\n" 
          "<ns1:GetUpcomingLotteries env:encodingStyle=\"http://www.w3.org/2003/05/soap-encoding\">\n" 
          "<EntityID xsi:type=\"xsd:int\">2</EntityID>\n" 
          "<Password xsi:type=\"xsd:string\">[email protected]</Password>\n" 
          "<SortBy xsi:type=\"xsd:int\">0</SortBy>\n" 
          "<limit xsi:type=\"xsd:int\">0</limit>\n" 
          "</ns1:GetUpcomingLotteries>\n" 
          "</env:Body>\n" 
          "</env:Envelope>"]; 


    NSURL *sRequestURL = [NSURL URLWithString:@"http://isapi.mekashron.com/soapclient/soapclient.php?"]; 
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:sRequestURL]; 
    NSString *sMessageLength = [NSString stringWithFormat:@"%d", [soapMessage length]]; 

    [request addValue: @"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; 
    [request addValue: @"urn:Lottery.Intf-ILottery/GetUpcomingLotteries" forHTTPHeaderField:@"SOAPAction"]; 
    [request addValue: sMessageLength forHTTPHeaderField:@"Content-Length"]; 

    [request setHTTPMethod:@"POST"]; 



    [request setHTTPBody:[soapMessage dataUsingEncoding:NSUTF8StringEncoding]]; 

    NSLog(@"soapMessage===\n %@",soapMessage); 

    NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; 

    if(theConnection) { 
     NSLog(@"hiii"); 
     self.webResponseData = [NSMutableData data]; 
    }else { 
     NSLog(@"Some error occurred in Connection"); 

    } 
} 



- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
    NSLog(@"Received Bytes from server: %lu", (unsigned long)[self.webResponseData length]); 

    NSString * strXml = [[NSString alloc] initWithBytes: [self.webResponseData mutableBytes] length:[self.webResponseData length] encoding:NSUTF8StringEncoding]; 

    NSLog(@"---- %@" ,strXml); 



} 

-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { 

    [self.webResponseData setLength:0]; 
} 

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { 
    [self.webResponseData appendData:data]; 
} 

-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { 
    NSLog(@"Some error in your Connection. Please try again."); 


} 

Мой вопрос:

1) Скажите, пожалуйста, я нужно изменить мой метод, или я должен изменить конец сервера для переноса моего API с IPv4 на IPv6?

2) Код для IPV6 с использованием метода SOAP под ios9 этой работы заменяющего NSURLConnection

+0

Возможный дубликат [Приложения рассматриваются в сети IPv6. Убедитесь, что ваше приложение поддерживает сети IPv6, так как требуется совместимость с IPv6] (http://stackoverflow.com/questions/37799925/apps-are-reviewed-on-an-ipv6-network-please-ensure-that-your- app-support-ipv6) – halfer

+0

[Другие потенциальные дубликаты] (https://stackoverflow.com/search?q=apps+are+reviewed+on+an+IPv6+network). – halfer

+0

Я не полностью _au fait_ с IPv6, но я думаю, что это связано с тем, разрешает ли DNS-система для 'isapi.mekashron.com' дополнительно к адресам IPv6. Возможно, вы могли бы изучить это? – halfer

ответ

2

На WWDC 2015, Apple объявила о переходе на IPV6-только для сетевых услуг в прошивкой 9. Теперь с 1 июня 2016 яблоко обязательным что приложение должно поддерживать iPV6.

Если разработчики используют стандартные сетевые API, такие как API NSURLSession и CFNetwork, предоставляемые Apple, они не должны испытывать никаких проблем. В противном случае вам придется переместить свой код в API, поддерживающие IPV6.

Если вы хотите использовать некоторую стандартную сетевую библиотеку, такую ​​как AFNetworking. В соответствии с этим site AFNetworking 3.0 поддерживает IPV6.

У Apple есть документация по адресу how to test IPV6 support.

+0

, пожалуйста, проверьте, что я делаю, используя мое мыло api? я должен изменить API в конце сервера на ipV6? – iphonemaclover

+1

Они не требуют изменения сайта сервера, только на стороне клиента. Согласно их документации NSURLConnection, она подпадает под API CFNetwork, так что это должно быть хорошо. Но поскольку в iOS 9 большинство API-интерфейсов NSURLConnection устарели, возможно, они поощряют использование NSURLSession. Но NSURLConnection не должно давать проблемы в соответствии с их документацией. Если вы использовали жестко закодированный IP-адрес, например «10.0.1.121», используйте DNS. Прямо сейчас я могу предложить вам протестировать поддержку IPV6 в соответствии с документацией и посмотреть, можно ли найти журналы ошибок. – skJosh

+0

@ код для IpV6 с использованием SOAP под ios9, пожалуйста? – iphonemaclover

Смежные вопросы