डिफ़ॉल्ट वेब ब्राउज़र में यूआरएल खोलें


93

मैं प्रतिक्रिया-मूल में नया हूं और मैं एंड्रॉइड और आईफ़ोन दोनों में क्रोम जैसे डिफ़ॉल्ट ब्राउज़र में url खोलना चाहता हूं ।

हम एंड्रॉइड में इरादे के माध्यम से url खोलते हैं जैसे कि कार्यक्षमता मैं प्राप्त करना चाहता हूं।

मैंने कई बार खोज की है लेकिन यह मुझे डीपकिंकिंग का परिणाम देगा

जवाबों:


217

आपको उपयोग करना चाहिए Linking

डॉक्स से उदाहरण:

class OpenURLButton extends React.Component {
  static propTypes = { url: React.PropTypes.string };
  handleClick = () => {
    Linking.canOpenURL(this.props.url).then(supported => {
      if (supported) {
        Linking.openURL(this.props.url);
      } else {
        console.log("Don't know how to open URI: " + this.props.url);
      }
    });
  };
  render() {
    return (
      <TouchableOpacity onPress={this.handleClick}>
        {" "}
        <View style={styles.button}>
          {" "}<Text style={styles.text}>Open {this.props.url}</Text>{" "}
        </View>
        {" "}
      </TouchableOpacity>
    );
  }
}

यहाँ एक उदाहरण है जिसे आप एक्सपो स्नैक पर आज़मा सकते हैं :

import React, { Component } from 'react';
import { View, StyleSheet, Button, Linking } from 'react-native';
import { Constants } from 'expo';

export default class App extends Component {
  render() {
    return (
      <View style={styles.container}>
       <Button title="Click me" onPress={ ()=>{ Linking.openURL('https://google.com')}} />
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    alignItems: 'center',
    justifyContent: 'center',
    paddingTop: Constants.statusBarHeight,
    backgroundColor: '#ecf0f1',
  },
});

@RajKumarN, अगर आपके पास एक ऐसा ऐप है जो समाचार लेखों को पकड़ लेता है और आप एक अलग ब्राउज़र में समाचार लेखों के हाइपरलिंक्स को खोलना चाहते हैं?
डैनियल

इसे देखें । facebook.github.io/react-native/docs/… । यह सहायक हो सकता है @Daniel
राज कुमार एन

@RajKumarN हम ब्राउज़र के पुनर्निर्देशन नहीं करने वाले ऐप के अंदर बाहरी URL कैसे खोल सकते हैं?
LazyCoder

9

एक सरल तरीका है जो जाँच को समाप्त करता है कि क्या एप्लिकेशन यूआरएल खोल सकता है।

  loadInBrowser = () => {
    Linking.openURL(this.state.url).catch(err => console.error("Couldn't load page", err));
  };

इसे एक बटन के साथ कॉल करना।

<Button title="Open in Browser" onPress={this.loadInBrowser} />

1
मैं अशक्त मूल्यों को कैसे संभालूं? मान लीजिए कि मैं बैकएंड से URL प्राप्त कर रहा हूं, लेकिन यह एक स्ट्रिंग के बजाय अशक्त हो गया है, ऐप क्रैश हो रहा है।
ASN

2
@ASN आप उस url को openURLविधि से पास करने से पहले जाँचते हैं । उदाहरण के लिए If (this.state.url) Linking.openURL(this.state.url):। यदि आप पूर्व जांच नहीं करना चाहते हैं, तो आप उपयोग करने के लिए कैच क्लॉज भी लगा सकते हैं।
CLUTCHER

1
हाँ, यह है कि मैं इसे कैसे संभाला। धन्यवाद :)
ASN

नमस्ते! बस एक सवाल, अगर आप डिफ़ॉल्ट रूप से खोलने के लिए ऐप का चयन करते हैं तो आपको एंड्रॉइड के लिए क्या करने का सुझाव है और मुझे उसी लिंक को खोलने की आवश्यकता है लेकिन ब्राउज़र में?
एंड्री ख्लोपिक

सरल, लघु, उपयोगी समाधान, क्या आप इसके बारे में टिप्पणी कर सकते हैं जब मैं ब्राउज़र से ऐप तक मैन्युअल रूप से वापस आता हूं तो यह खाली स्क्रीन दिखाता है।
गणेशदेशमुख

1

प्रतिक्रिया में 16.8+, कार्यात्मक घटकों का उपयोग करके, आप करेंगे

import React from 'react';
import { Button, Linking } from 'react-native';

const ExternalLinkBtn = (props) => {
  return <Button
            title={props.title}
            onPress={() => {
                Linking.openURL(props.url)
                .catch(err => {
                    console.error("Failed opening page because: ", err)
                    alert('Failed to open page')
                })}}
          />
}

export default function exampleUse() {
  return (
    <View>
      <ExternalLinkBtn title="Example Link" url="https://example.com" />
    </View>
  )
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.