2017-09-21 15 views
0

私はfetch()を使ってhttpnameのリクエストをappname:// data = 123456のようなURLスキームにリダイレクトするページに送信しています。fetchがカスタムURLスキームにリダイレクトされて失敗します

これらのデータをURLから抽出してから、他のリクエストをAPIに送信する必要があります。問題は、iosに問題があることです。 Androidは問題なく動作しますが、iosでは「Network request failed」という結果が表示されます。

さらに長いデバッグの後、ネイティブの反応の背後にある実装が「サポートされていないURL」というエラーをキャッチすることがわかりました。

この方法を使用する方法はありますか?私は、カスタムURLスキームでアプリケーションを起動する行に沿って何かを試していましたが、今appname://サファリに書き込まれているのは私のアプリを起動しますが、リクエストには何の効果もありませんでした。私は、要求のために使用しています

コード:OAUTH2_IS_URLはhttps://login.server.comとアクション/ API /ログインですが

const postData = {username, password}; 
    return fetch(BuildConfig.OAUTH2_IS_URL + action, { 
     method: 'POST', 
     credentials: 'same-origin', 
     mode: 'same-origin', 
     headers: { 
      'Content-Type': 'application/x-www-form-urlencoded', 
     }, 
     body: Object.keys(postData).map(key => key + "=" + 
    encodeURIComponent(postData[key])).join('&') 
    }); 

答えて

1

私はあなたの質問から理解することは、から来ているURLでアプリを開くしようとしているということですa fetchリクエスト。

この場合、反応ネイティブのLinking APIを使用する必要があります。 URLはcanOpenURL()でサポートし、問題は、私はURLは、Android上でどのようなデバッグ要求から到着したことがないURLですopenURL()

Linking.canOpenURL(url).then(supported => { 
    if (!supported) { 
    console.log('Can\'t handle url: ' + url); 
    } else { 
    return Linking.openURL(url); 
    } 
}).catch(err => console.error('An error occurred', err)); 
+0

でアプリを起動しているかどうかをテストすることができます。私はそれを受け取ることはありませんが、代わりに私はエラーが発生します。 – Anderiel

関連する問題