2017-10-30 5 views
1

実際のiPhoneでReactネイティブアプリケーションを動作させようとしているので、branch.ioとの統合を開始できます。何らかの理由で、私のアプリがAWSのバックエンドAPIにネットワーク要求を行うことができません。 localhost:3000/auth/login /でローカル開発環境のバックエンドAPIにヒットしたとき、私のコードはシミュレータで期待どおりに動作します。以下は私の努力の結果です。リアルIOSデバイスはネットワーク要求を行いません - ネイティブの反応

HTTPクラスのポスト方法:

post(endpoint, body, auth = null) { 

    console.log(this.apiUrl + endpoint); 
    console.log(this._headers(true)); 
    console.log(body); 

    return Observable.defer(() => { 
    return Observable.fromPromise(fetch(this.apiUrl + endpoint, { 
     method: 'post', 
     headers: this._headers(auth), 
     body: JSON.stringify(body) 
    }) 
    .then(this._checkStatus) 
    .then(res => res.json())); 
    }); 
} 

_headers(auth) { 
    let token = (auth) ? token = Config.clientId : this.accessToken; 
    let headers = new Headers({ 
    'Content-Type': 'application/json', 
    'Authorization': 'Bearer ' + token 
    }); 

    return headers; 
} 

私のiOSデバイスにコードを作成した後、私は、ログインしようとすると、何も起こりません。投稿のリクエストにコンソールコールを追加して、適切な値が渡されていることを確認してください。以下は、デバッグモードの実行中にログインしようとしたときの結果です。私はReact Nativeに慣れていないので、ネットワークタブが実際のデバイスからの要求を検出するかどうかはわかりませんが、ネットワーク呼び出しの兆候はありません。ポストマンからまったく同じ呼び出しを実行

enter image description here

期待以下から分かるように働く:

enter image description here

どのような援助が大幅に高く評価されるだろう。事前にありがとう。

+0

私はそれがあなたがhttpのURLにアクセスしようとしていると思います。アプリがアプリ設定のATS設定でhttpにアクセスできるようにする必要があります。どのようにあなたのIDEではわからないが、あなたはそれをGoogleにできるはずです。 – Fogmeister

+0

ありがとうございます。それはうまくいった。私は実際にこれを前に試して何らかの理由でそれが動作していなかった。私が間違ったことを確信していない。それは確かに開発者のエラーでした。私は前に参照したスタックページを含んでいます:https://stackoverflow.com/questions/31216758/how-can-i-add-nsapptransportsecurity-to-my-info-plist-file – Aaron

答えて

0

HTTPSではなくHTTPを使用している可能性が高いので、NSAppTransportSecurityを有効にし、info.plistのNSExceptionDomainsリストにドメインを追加する必要があります。

セキュリティチェックを完全に無効にするには、NSAllowsArbitraryLoadsをオンにします。しかし、開発目的には便利ですが、開発環境をリリースや生産のように機能させることで、バグや回帰を最小限に抑えることが常に望ましいです。 (生産にNSAllowsArbitraryLoadsを使用するには、真正な理由がありますが、あなただけの1つのバックエンドに話をしている場合は、あなたがそれを必要としない。)

あなたは(ATS設定の基本に行く)ATS hereの設定について学ぶことができます。

関連する問題