React Native 无法打开URL:标测图:0,0?q=XX,XX

f4t66c6m  于 2023-01-02  发布在  React
关注(0)|答案(1)|浏览(302)

我在生产中遇到了很多这样的错误:“无法打开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来激活链接,那么为什么会出现错误呢?

y4ekin9u

y4ekin9u1#

试试这个:

<View>
  {
    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
}

</View>

相关问题