这个其实在RN的文档中已经写好了,不过最新的依然不需要做文档中的额外步骤。

直接在自定义的组件里面引用Linking,然后使用Linking的openURL函数即可,这个会自动选择系统的浏览器打开链接。

[javascript] 
    view plain 
     copy 
    
 
     print 
    ? 
    
  
1. var url = ‘http://www.baidu.com’;  
2.      Linking.openURL(url)  
3. catch((err)=>{  
4. ’An error occurred’, err);  
5.      });

var url = 'http://www.baidu.com';
     Linking.openURL(url)
     .catch((err)=>{
       console.log('An error occurred', err);
     });

还可以使用canOpenURL做一次判断,是否是有效的地址,然后根据判断进行上面的操作:

[javascript] 
    view plain 
     copy 
    
 
     print 
    ? 
    
  
1. Linking.canOpenURL(url)  
2.     .then((supported)=>{  
3. if
4. ’Can\’t handle url: ’
5.         Alert.alert(  
6. ’提示’,   
7. ’Can\’t handle url: ’
8.           [  
9. ’OK’, onPress:()=>{}}  
10.           ]  
11.         );  
12. else{  
13. return
14.       }  
15.     })  
16. catch((err)=>{  
17. ’An error occurred’, err);  
18.       Alert.alert(  
19. ’提示’,   
20. ’An error occurred: ’
21.         [  
22. ’OK’, onPress:()=>{}}  
23.         ]  
24.       );  
25.     });

Linking.canOpenURL(url)
    .then((supported)=>{
      if (!supported){
        console.log('Can\'t handle url: ' + url);
        Alert.alert(
          '提示', 
          'Can\'t handle url: ' + url,
          [
            {text: 'OK', onPress:()=>{}}
          ]
        );
      }else{
        return Linking.openURL(url);
      }
    })
    .catch((err)=>{
      console.log('An error occurred', err);
      Alert.alert(
        '提示', 
        'An error occurred: ' + err,
        [
          {text: 'OK', onPress:()=>{}}
        ]
      );
    });

后面发现文档中说了这么一句话:

你还可以使用其他类型的URL,比如一个地理位置(形如”geo:37.484847,-122.148386”或是一个通讯录名片,只要是可以通过{@code Intent.ACTION_VIEW}打开的即可。

也就是说这个Linking可以打开更多的东西,然后参考了IOS的openURL,试了下打开App Store,通讯录等等,结果是令人满意的,都可以打开。

因此,在你做的APP中,如果需要用户跳转到App Store中对你的应用进行评价的话,也可以这样做:

[javascript] 
    view plain 
     copy 
    
 
     print 
    ? 
    
  
1. var url = ‘itms-apps://’;  
2. ’itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?mt=8&onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software&id=APP_ID’;  
3. //后面有个APP_ID,填写个人的APP_ID就可以跳转到评论地址了
4.   
5.     Linking.canOpenURL(url)

var url = 'itms-apps://';
    url = 'itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?mt=8&onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software&id=APP_ID';
    //后面有个APP_ID,填写个人的APP_ID就可以跳转到评论地址了

    Linking.canOpenURL(url)

上面这个是在网上看到的,itms-apps:// 打头的就是指的APP Store,还有其他的可以参考这个地址。这里详细列出了各种常用系统应用的url头。

注意:如果按照这个方式无法打开,按照官方文档上说的要在项目的Info.list中设置LSApplicationQueriesSchemes字段

具体这个如何添加,网上也有资料,可以自行搜索下。

原文链接:

这个其实在RN的文档中已经写好了,不过最新的依然不需要做文档中的额外步骤。

直接在自定义的组件里面引用Linking,然后使用Linking的openURL函数即可,这个会自动选择系统的浏览器打开链接。

[javascript] 
    view plain 
     copy 
    
 
     print 
    ? 
    
  
1. var url = ‘http://www.baidu.com’;  
2.      Linking.openURL(url)  
3. catch((err)=>{  
4. ’An error occurred’, err);  
5.      });

var url = 'http://www.baidu.com';
     Linking.openURL(url)
     .catch((err)=>{
       console.log('An error occurred', err);
     });

还可以使用canOpenURL做一次判断,是否是有效的地址,然后根据判断进行上面的操作:

[javascript] 
    view plain 
     copy 
    
 
     print 
    ? 
    
  
1. Linking.canOpenURL(url)  
2.     .then((supported)=>{  
3. if
4. ’Can\’t handle url: ’
5.         Alert.alert(  
6. ’提示’,   
7. ’Can\’t handle url: ’
8.           [  
9. ’OK’, onPress:()=>{}}  
10.           ]  
11.         );  
12. else{  
13. return
14.       }  
15.     })  
16. catch((err)=>{  
17. ’An error occurred’, err);  
18.       Alert.alert(  
19. ’提示’,   
20. ’An error occurred: ’
21.         [  
22. ’OK’, onPress:()=>{}}  
23.         ]  
24.       );  
25.     });

Linking.canOpenURL(url)
    .then((supported)=>{
      if (!supported){
        console.log('Can\'t handle url: ' + url);
        Alert.alert(
          '提示', 
          'Can\'t handle url: ' + url,
          [
            {text: 'OK', onPress:()=>{}}
          ]
        );
      }else{
        return Linking.openURL(url);
      }
    })
    .catch((err)=>{
      console.log('An error occurred', err);
      Alert.alert(
        '提示', 
        'An error occurred: ' + err,
        [
          {text: 'OK', onPress:()=>{}}
        ]
      );
    });

后面发现文档中说了这么一句话:

你还可以使用其他类型的URL,比如一个地理位置(形如”geo:37.484847,-122.148386”或是一个通讯录名片,只要是可以通过{@code Intent.ACTION_VIEW}打开的即可。

也就是说这个Linking可以打开更多的东西,然后参考了IOS的openURL,试了下打开App Store,通讯录等等,结果是令人满意的,都可以打开。

因此,在你做的APP中,如果需要用户跳转到App Store中对你的应用进行评价的话,也可以这样做:

[javascript] 
    view plain 
     copy 
    
 
     print 
    ? 
    
  
1. var url = ‘itms-apps://’;  
2. ’itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?mt=8&onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software&id=APP_ID’;  
3. //后面有个APP_ID,填写个人的APP_ID就可以跳转到评论地址了
4.   
5.     Linking.canOpenURL(url)

var url = 'itms-apps://';
    url = 'itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?mt=8&onlyLatestVersion=true&pageNumber=0&sortOrdering=1&type=Purple+Software&id=APP_ID';
    //后面有个APP_ID,填写个人的APP_ID就可以跳转到评论地址了

    Linking.canOpenURL(url)

上面这个是在网上看到的,itms-apps:// 打头的就是指的APP Store,还有其他的可以参考这个地址。这里详细列出了各种常用系统应用的url头。

注意:如果按照这个方式无法打开,按照官方文档上说的要在项目的Info.list中设置LSApplicationQueriesSchemes字段

具体这个如何添加,网上也有资料,可以自行搜索下。