LoginSignup
2
1

More than 3 years have passed since last update.

React NativeのWebViewの中のリンクをブラウザで開く

Last updated at Posted at 2020-10-16

はじめに

アプリを作っている時に、全てネイティブで作るのではなく、WebViewを使ってコンテンツを表示したい時があると思います。さらにWebViewの中のリンクを押すとそこからブラウザに飛んで欲しい場面がたまにあります。
例えば、アプリ内のお知らせをHTMLで作成しwebViewで読み込むアプリで、自社のキャンペーンの紹介をする時にHTMLのリンクからブラウザで自社サイトに飛んで欲しい時などです。

やり方

1.LinkingとPlatformをインポートしておく

import { Linking, Platform } from 'react-native'

2.WebViewのオプションを設定する

onShouldStartLoadWithRequest={event => {
  const isExternalLink =
    Platform.OS === 'ios'
      ? event.navigationType === 'click'
      : true
  if (event.url !== 'about:blank' && isExternalLink) {
    Linking.openURL(event.url)
      return false
    }
  return true
}}

こうすることで、webView内のリンクを踏むとブラウザ開かれます。


  • isExternalLinkについて

isEternalLinkの記述がなくてもリンクを踏むとちゃんとブラウザが開きますが、iOSの場合webViewでページを開いた瞬間にLinkingが発火してブラウザに遷移してしまいます。
そこで、iOSの時にはリンクをクリックした時にのみLinkingが発火するようにしています。


  • return falseについて

なくてもリンクはブラウザで開きますが、アプリに戻ってきた時にwebViewの画面がリンク先のページになっているので、それを防いでいます。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1