Как разрешить приложению доступ в интернет на ios?

Мое приложение Nativescript отлично работает на Android, но не подключается к Интернету на ios. Либо установлены, либо смоделированы.

Это мой магазин (где я пользуюсь интернетом):

import Vue from 'vue';
import Vuex from 'vuex';
import axios from 'axios/dist/axios';

const api = axios.create({
  baseURL: 'http://asdfasdf.compute.amazonaws.com',
  timeout: 2000,
});

Vue.use(Vuex);
export default new Vuex.Store({
  strict: process.env.NODE_ENV !== 'production',
  state: {
    name: null,
    err: null,
  },
  mutations: {
    initialize(state, name) {
      state.name = name;
    },
    err(state, txt) {
      state.err = txt;
    },
  },
  actions: {
    init({commit}) {
      api
        .get('/name/')
        .then(response => {
          commit('initialize', response.data);
        })
        .catch(function(error) {
          commit('err', error);
        });
    },
  },
});

Я отлично загружаю имя при установке Android, Но на эмуляторе iOS и установке iPhone я получаю:

Error: Request failed with status code null

Любые мысли, как я могу это исправить? Я нигде не получаю никаких ошибок или исключений, также я получаю точно такую ​​​​же ошибку, если отключаю свой телефон от Интернета. Я не использую никаких прокси.

Использовать HTTPS или отключить ATS developer.apple.com/documentation/bundleresources/…

Paulw11 30.07.2019 14:41
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
354
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Одной из возможных проблем является ATS, которую вы можете прочитать здесь.

Что вам нужно сделать, так это добавить следующий фрагмент в app/App_Resources/iOS/Info.plist. Там есть тег <dict> с большим количеством контента. Все, что вам нужно сделать, это положить это внутрь этого <dict>

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSAllowsArbitraryLoads</key>
  <true/>
</dict>

Таким образом, вы получите что-то вроде:

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version = "1.0">
    <dict>
    # snippet goes here
    .
    .
    .
    </dict>
</plist>

Вам также необходимо сделать это, если ваш сервер использует самозаверяющий сертификат.

У моего сервера еще нет сертификата. Только http.

yukashima huksay 30.07.2019 15:02

это по IP или у вас есть имя DNS?

m1sh0 30.07.2019 15:04

У меня длинное имя DNS от aws.

yukashima huksay 30.07.2019 15:07

чем проверить это и, пожалуйста, дайте мне знать, если у вас все еще есть проблема

m1sh0 30.07.2019 15:13

В ссылке, которую я вам присылаю, написано, где она находится. Он должен быть в /template/app/App_Resources/iOS/Info.plist.

m1sh0 30.07.2019 15:19

Вы должны вставить этот фрагмент внутри тега dict вашего Info.plist.

m1sh0 30.07.2019 15:31

@yukashimahuksay все в порядке?

m1sh0 30.07.2019 16:04

Я добавил фрагмент, но по-прежнему получаю сообщение об ошибке «Запрос не выполнен с нулевым кодом состояния» для моей самозаверяющей локальной конечной точки https API.

Koray Küpe 22.10.2019 16:07

Проблема исчезла после редактирования файла Info.plist, который разрешает определенные домены, а не все домены. и я слышал, что если вы попытаетесь загрузить свое приложение в магазин приложений, оно будет отклонено в iOS 10+, если вы разрешите все домены http.

Вот моя безопасность транспорта приложений

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSExceptionDomains</key>
            <dict>
                <key>specificDomain.com</key>
                <dict>
                    <key>NSIncludesSubdomains</key>
                    <true/>
                    <key>NSExceptionAllowsInsecureHTTPLoads</key>
                    <true/>
                    <key>NSExceptionRequiresForwardSecrecy</key>
                    <false/>
                </dict>
            </dict>
        <key>NSAllowsLocalNetworking</key>
        <true/>
    </dict>

Другие вопросы по теме