首页 > 解决方案 > 为什么有时 iOS 无法在 React Native 上打开 url 短信

问题描述

我有一个我想了解的问题:为什么我不时收到 Sentry 错误,告诉我 iPhone X 或 XR 无法打开 SMS url?

我有这个错误:无法打开 URL:sms:&body=...

但更奇怪的是,当我查看我的 Sentry 面包屑时,我意识到这个错误似乎发生在用户甚至没有执行必要的操作来打开 SMS 应用程序时!

我发送的短信包含由 Firebase Dynamics Links 生成的 URL。

这是生成短信的url的代码和发送短信的代码

InviteFriends.js

export default inviteFriends = () => {
    let sharingToken = store.getState().user.share_token

    firebase.dynamicLinks().buildShortLink({
        link: `http://mywebsite?type=invite&sharing=${sharingToken}`,
        domainUriPrefix: 'https://mylink.page.link',
        navigation: {...},
        android: {...},
        ios: {...}
    })
    .then((url) => {
        sms('', i18n.t('account.addFriends.searchUser.hint.sms', {link: url}))

    })
sms.js

const sms = (phone = '', body = '') => {
  const sep = Platform.OS === 'ios' ? '&' : '?'
  const url = `sms:${phone}${body ? `${sep}body=${encodeURIComponent(body)}` : ''}`

  const supported = await Linking.canOpenURL(url)

  if (!supported) {
    return Promise.reject(new Error('Provided URL can not be handled')) 
  }

  return Linking.openURL(url)
}

我觉得奇怪的是,在我看来,如果不支持打开 SMS 应用程序,我应该会收到一条消息,说“无法处理提供的 URL”。我错了吗 ?

谢谢,

维克多

标签: react-nativereact-native-ios

解决方案


推荐阅读