我是使用 React Native 环境的新手,当我在没有任何开发服务器的情况下测试
debug-app.apk
时,我在理解我的应用程序发生了什么方面遇到了一些困难。
我的意思是,目前的问题是:将 Onesignal API 的 userId 发送到我的 API,oneSignal 也没有捕获我的设备,并使用 AXIOS 上传文件,当我在模拟器中运行我的应用程序时,问题不存在.
有谁知道为什么吗?
无论我如何尝试重新加载应用程序,当 OneSignal 尝试连接到我的设备时,我的 API 都会发送状态:400,但是当我在模拟器中执行此操作并有权访问 Metro 服务器时,API 会发送状态 400第一次尝试时,由于某种原因,我不知道 OneSignal 在第一次尝试中没有捕获 userId,但是,在其他尝试中,API 正在发送 status:200,并且 OneSignal 运行良好。而且,无论如何,当我在开发服务器中时,axios 上传文件得很好,而在外部它甚至不调用 API。
我的axios API连接和上传文件的代码:
import axios from 'axios'
var URL = {
http: '<MY API>',
}
if (process.env.NODE_ENV !== 'dev') {
URL = {
http: '<MY API>',
}
}
export const api = axios.create({
baseURL: URL.http,
})
console.log(JSON.stringify(api))
import { token } from '../../graphql/storage'
import { api } from '../../services/api'
export type ImageUploadProps = {
uri: string
type: string
name: string
}
interface Props {
uploadImages: ImageUploadProps
}
export const upload = async ({ uploadImages }: Props) => {
const clientToken = await token()
const data = new FormData()
data.append('file', uploadImages)
// uploadImages.forEach(item => data.append('files', item))
try {
const res = await api.post('/upload', data, {
headers: {
'Content-Type': 'multipart/form-data',
authorization: `Bearer ${clientToken}`,
},
})
return res.data
} catch (e) {
console.log('UploadErro:', JSON.stringify(e))
}
}
我的 OneSignal 初始化:
const initOneSignal = async () => {
OneSignal.setAppId('<MY APPID>')
OneSignal.setLogLevel(6, 0)
OneSignal.setRequiresUserPrivacyConsent(false)
OneSignal.promptForPushNotificationsWithUserResponse()
return OneSignal
}
const onesignal = await initOneSignal()
const data = await onesignal.getDeviceState()
if (data) {
try {
await setNotificationId({
variables: {
input: {
client_id,
notificationId: data!.userId,
},
},
})
} catch (e: any) {
console.log(JSON.stringify(e)) //erro aqui
}
}
我真的不知道为什么会发生这种情况,出于某种原因,我认为我的设备没有连接到 API,但是我的应用程序有一个实时聊天功能,运行得非常好,并且访问 API 的其他功能也运行良好.
我已经找到了解决方案,我刚刚发布了生产版本
gradlew assembleRelease
,效果很好