在调试模式下,API请求有效。释放模式,返回null

时间:2019-09-01 23:58:15

标签: ios react-native react-native-ios

我的React-native应用程序已经接近完成,使用iOS模拟器对其进行了测试。在“调试模式”下,API请求成功运行并显示在应用程序上。但是,在发布模式下,只有登录请求有效。

我当前的详细信息如下:

 react-native: 0.60.3,
 native-base: 2.13.5,
 react-native-cli: 2.0.1,

 Visual Studio Code 1.36.1 
 Xcode 11 beta 7

我已完成以下操作:

  • 将域添加到info.plist的权限中
  • 使用其他API服务器来查看我使用的服务器是否引起了问题
  • 使用Xcode中的调试和发布模式尝试了不同的优化

此登录API请求有效并返回我想要的令牌:

async(data) => {
            try{
                const url = 'https://assets.breatheco.de/apis/credentials/auth'
                let response1 = await fetch(url, {
                    method: 'POST',
                    body: JSON.stringify(data),
                    headers: {
                        'Authorization':'application/json',
                        'Content-Type':'application/json'
                    }, 
                });
                // console.log(response)
                let res = await response1.json();
                if (response1.status >= 200 && response1.status < 300) {
                    data.error = "";
                    let user = res;
                    console.log('userToken: ', user, typeof(user))
                    getActions().userToken.store(user);
                } else {
                    let error = res;
                    console.log("something went wrong in getting userToken", error, getStore().userToken);
                    return false;
                    throw error;
                }

            } catch(error) {
                {() => getActions().userToken.remove()};
                console.log("Email: ", data.username);
                console.log("Password: ", data.password);
                console.log("Error: ", error);
                throw data.error;
            }
        }

这就是我的项目如何接收其任务的。

async() => {
       console.log('entering get Tasktoken')
            try {
                let store = getStore()
                let session = store.userToken;

                let accessToken = session.access_token;
                let student_id = session.id;
                console.log(student_id)

                const taskURL = "https://api.breatheco.de/student/" + student_id + "/task/" 
                console.log('link is '+ taskURL);

                let response2 = await fetch(taskURL, { 
                    method: 'GET',
                    cache: 'no-cache',
                    headers: {
                        'Authorization': 'Bearer ' + accessToken,
                        'Content-Type': 'application/json',
                        'Cache-Control': 'no-cache'},
                    body: JSON.stringify(),

                    });
                let tasks = await response2.json();
                console.log('tasks:',tasks)
                getActions().taskToken.store(tasks);

            } catch(error) {
                console.log('something went wrong in getting taskToken', error)
            } 

这取决于接收项目和任务。

在调试模式下,我获得了所需的数组输出,并期望在发布模式下也是如此:

https://imgur.com/a/nkHh5LU

但是,相反,我收到的输出作为null返回,并且在发布模式下是这样的:

Error: { [Error: No input to stringify] }

https://imgur.com/a/3Sm1Y9t

1 个答案:

答案 0 :(得分:0)

这是我逐步解决此问题的方法。

  1. 恢复出厂设置

    • 我最终不得不恢复出厂设置
    • 还必须再次升级到最新的Catalina / Xcode。
  2. 启动新项目

    • 我保存了src文件,package.json,应用程序图标和其他详细信息
    • 使用react-native init AwesomeNativeBase的新项目来构建它
  3. 更改的部署目标

    • 我搜索了文件程序中的所有IOS_DEPLOYMENT_TARGET = {version number here},并将其更改为11.0。
    • pod install踢了它
  4. 更新React和React-Native

    • 它的基本知识是您拥有React和React-Native的最新版本。
    • 确保检查其网站

这不是最干净的解决方案,但对我有用。