gpt4 book ai didi

ios - React Native Expo 应用程序在发布到 Testflight 时崩溃

转载 作者:行者123 更新时间:2023-12-02 03:59:36 32 4
gpt4 key购买 nike

我有一个使用位置权限的 React Native Expo 应用程序。它在我的设备和模拟器上运行良好,因此进入分发的下一步 - TestFlight。当我将 ipa 加载到 Testflight 然后尝试运行该应用程序时,该应用程序会一直运行到我请求用户许可的程度。 (因此应用程序加载,身份验证工作,到我的服务器和数据库的链接都工作等)。

在代码请求用户位置权限时,通常的警报“使用应用程序时允许,始终允许,不允许”在屏幕上闪烁几毫秒,然后应用程序崩溃,我可以选择分享评论到 Testflight。

请求许可的代码在这里:

import * as Location from 'expo-location';
import * as Permissions from 'expo-permissions';
import createDataContext from '../../Context/createDataContext';

const deviceLocationReducer = (state, action) => {
switch (action.type) {
case 'get_device_location':
return action.payload;
default:
return state;
}
};

const getDeviceLocation = dispatch => async () => {
let deviceLocation = null;
try {
// Ask User permission for location
const { status } = await Permissions.askAsync(Permissions.LOCATION);
console.log('\n***\nDeviceLocationContext.js: Permission status', status);
if (status === 'granted') {
// Permission granted, get user location
deviceLocation = await Location.getCurrentPositionAsync({});
console.log('DeviceLocationContext.js: Setting Context', deviceLocation);
} else {
console.log(
'DeviceLocationContext.js: Permission to access location denied'
);
}

dispatch({
type: 'get_device_location',
payload: deviceLocation,
});
} catch ({ message }) {
console.log(
`DeviceLocationContext.js: Get Device Location Error: ${message}`
);
}
};

export const { Context, Provider } = createDataContext(
deviceLocationReducer,
{ getDeviceLocation },
null
);

这里是app.json

{
"expo": {
"name": "MyApp",
"description": "MyApp Description",
"slug": "client",
"privacy": "public",
"sdkVersion": "35.0.0",
"platforms": ["ios", "android"],
"version": "0.0.7",
"orientation": "portrait",
"icon": "./assets/images/icon.png",
"splash": {
"image": "./assets/images/splash.png",
"resizeMode": "contain",
"backgroundColor": "#ffffff"
},
"updates": {
"fallbackToCacheTimeout": 0
},
"assetBundlePatterns": ["**/*"],
"ios": {
"supportsTablet": true,
"bundleIdentifier": "com.reachout.myapp",
"icon": "./assets/images/icon.png",
"infoPlist": {
"NSCameraUsageDescription": "Please allow access to add your photo.",
"NSPhotoLibraryUsageDescription": "Please allow access to select an image from your photo library.",
"NSLocationWhenInUseUsageDescription": "Please allow access to show venues near you"
},
"buildNumber": "0.0.7"
},
"android": {
"permissions": [
"CAMERA",
"ACCESS_COARSE_LOCATION",
"ACCESS_FINE_LOCATION"
],
"versionCode": 7,
"icon": "./assets/images/icon.png"
}
}
}

这里是package.json

{
"main": "node_modules/expo/AppEntry.js",
"scripts": {
"start": "expo start",
"android": "expo start --android",
"ios": "expo start --ios",
"web": "expo start --web",
"eject": "expo eject"
},
"dependencies": {
"@expo/vector-icons": "^10.0.6",
"axios": "^0.19.0",
"expo": "^35.0.0",
"expo-camera": "^7.0.0",
"expo-constants": "~7.0.0",
"expo-font": "^7.0.0",
"expo-image-picker": "~7.0.0",
"expo-location": "~7.0.0",
"expo-permissions": "^7.0.0",
"lodash": "^4.17.15",
"react": "16.8.3",
"react-dom": "16.8.3",
"react-native": "https://github.com/expo/react-native/archive/sdk-35.0.0.tar.gz",
"react-native-elements": "^1.2.7",
"react-native-gesture-handler": "^1.3.0",
"react-native-image-picker": "^1.1.0",
"react-native-map-clustering": "^3.0.6",
"react-native-maps": "^0.26.1",
"react-native-paper": "^3.1.1",
"react-native-ratings": "^6.5.0",
"react-native-reanimated": "^1.2.0",
"react-native-web": "^0.11.7",
"react-navigation": "^4.0.10",
"react-navigation-stack": "^1.9.4",
"react-navigation-tabs": "^2.5.6"
},
"devDependencies": {
"babel-eslint": "^9.0.0",
"babel-preset-expo": "^7.0.0",
"eslint": "^5.16.0",
"eslint-config-airbnb": "^17.1.1",
"eslint-config-prettier": "^4.3.0",
"eslint-config-wesbos": "0.0.19",
"eslint-plugin-html": "^5.0.5",
"eslint-plugin-import": "^2.18.2",
"eslint-plugin-jsx-a11y": "^6.2.3",
"eslint-plugin-prettier": "^3.1.1",
"eslint-plugin-react": "^7.16.0",
"eslint-plugin-react-hooks": "^1.7.0",
"prettier": "^1.19.1"
},
"private": true
}

有人有什么想法吗?我完全一片空白 - 我已经在生产和开发中运行了 expo 的构建,我已经清除了 expo 缓存,我已经从我的设备中删除了该应用程序并再次加载 - 一切都无济于事。

所以我有一个“工作”应用程序,我无法分发它进行测试。帮助!!

另外 - 我不知道如何在 Testflight 上调试或访问博览会构建的应用程序的崩溃数据 - 再次感谢任何帮助。谢谢。

最佳答案

已解决:) - 将离开这里,以防万一其他人遇到此类问题,因为这个问题让我卡住了几天并构建。

我的问题是,我在一个也安装了 Mapview 的组件的 useEffect Hook 中请求用户位置。在 Mapview 中,我将 provider 属性设置为 google

如果您这样做,那么您必须在您的信息 plist 中添加一个 gogleMapApi 键。公平地说,Expo 确实在 MapView 文档中说明了这一点,但它位于底部,作为 Android 文档之后的旁白。在仔细查看我的日志几个小时后,我发现问题是 google api 错误,而不是权限位置错误,我意识到了我的问题和该线程的解决方案。

[https://forums.expo.io/t/how-to-set-googlemaps-with-gmsservices-provideapikey/17770][1]

希望这对某人有帮助!

关于ios - React Native Expo 应用程序在发布到 Testflight 时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59156847/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com