我在生产中遇到了很多这样的错误:“无法打开URL:maps:0,0?q=XX,XX”。所有这些都来自iOS v16.x,在不同的设备上。我的链接是这样创建的:
const MapLink = ({ coords, label, style, type = 'tDF' }: Props) => {
const { theme } = useTheme();
const [can, setCan] = useState<boolean>();
const url = useMemo(
() =>
coords
? `${Platform.select({
ios: 'maps',
android: 'geo',
})}:0,0?q=${coords.latitude},${coords.longitude}`
: '',
[coords],
);
useEffect(() => {
coords
? Linking.canOpenURL(url)
.then(r => setCan(r))
.catch(() => setCan(false))
: setCan(false);
}, [coords]);
return can && coords && coords.latitude && coords.longitude ? (
<Button
bgColor={theme.color.textL}
type={'underline'}
size={'sm'}
label={label ?? ''}
onPress={() => Linking.openURL(url).then()}
style={style}
/>
) : label ? (
<Typo type={type} text={label} color={theme.color.text} />
) : null;
};
我无法在模拟器或真实的设备上重现它。在激活链接之前,我使用canOpenURL进行检查,所以我不明白为什么1)一个简单的Map链接无法打开2)canOpenURL应该返回true来激活链接,那么为什么会出现错误呢?
1条答案
按热度按时间y4ekin9u1#
试试这个: