Несколько дней назад мое приложение было отклонено по следующей причине:
Мы обнаружили одну или несколько ошибок в вашем приложении при проверке на iPad и iPhone под управлением iOS 9.3.5 при подключении Wi-Fi к сети IPv6.
В частности, мы обнаружили, что при входе в систему появляется сообщение об ошибке. Мы приложили снимок экрана для справки.
Следующие шаги
Запустите приложение на устройстве, подключенном к сети IPv6 (все приложения должны поддерживать IPv6), чтобы определить проблему (проблемы), затем проверьте и повторно отправьте приложение на рассмотрение.
Если мы неправильно поняли предполагаемое поведение вашего приложения, ответьте на это сообщение в Центре разрешения проблем, чтобы предоставить информацию о том, как должны работать эти функции.
Для новых приложений удалите все предыдущие версии вашего приложения с устройства, затем установите и следуйте инструкциям, чтобы воспроизвести проблему (проблемы). Для получения обновлений установите новую версию как обновление предыдущей версии, а затем следуйте инструкциям, чтобы воспроизвести проблему (проблемы).
Ресурсы
Информацию о поддержке сетей IPv6 см. в разделах Поддержка сетей IPv6 DNS64/NAT64 и О работе в сети.
Если у вас возникли трудности с воспроизведением обнаруженной проблемы, попробуйте протестировать рабочий процесс, описанный в Технических вопросах и ответах QA1764: Как воспроизвести ошибки, о которых сообщалось в материалах App Store.
Я установил две сети IPv6, одну из них в капсуле времени, а другую совместно с моим MacBook Pro. Из сети Time Capsule (которая является полностью сетью IPv6) приложение работает правильно. Из общей сети MacBook Pro я получаю два результата... Когда устройство подключается к этой сети IPv6 и настраивается только DNS, приложение работает, но когда оно получает DNS и один IP-адрес в формате 169.254.X.X, приложение аварийно завершает работу. подключение к серверу.
Проблема в том, что ответ на запрос $http идет со стороны ошибки, а не со стороны успеха. Я пробовал использовать Ionic $http и плагин cordova-http (https://github.com/Switch168/cordova-HTTP#110), и результат был таким же. Я не знаю, что происходит, потому что у меня есть проект Cordova (только Cordova, а не Ionic) с AngularJS, и он не дает сбоев. Тогда в чем разница между Ionic $http и AngularJS $http? Я не могу понять, в чем разница.
См. это изображение.
Пример запроса $http (с использованием плагина Ionic $http и cordova-http):
callWs: function(ws, method, data){
var defferer = $q.defer();
if (device.platform == 'Android' || device.platform == 'iOS'){
$window.CordovaHttpPlugin.postJson(url_request,
data_sent,
{"cache-control": "no-cache, private, no-store, must-revalidate",
"Authorization": basic_auth,
"Content-Type": "application/x-www-form-urlencoded; charset=utf-8"
},
function(res) {
defferer.resolve(res.data);
}, function(error) {
defferer.reject(error);
});
} else {
$http({
url: url_request,
method: 'POST',
withCredentials: true,
timeout: HTTPTIMEOUT,
headers: {
'cache-control': 'no-cache, private, no-store, must-revalidate',
'Authorization': basic_auth,
'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8'
},
dataType : 'json',
data: data_sent
}).then(function (res) {
defferer.resolve(res.data);
}, function (error) {
defferer.reject(error);
});
}
return defferer.promise;
}