読者です 読者をやめる 読者になる 読者になる

望月いちろうのREADME.md

書き溜めておいた技術記事や旅行記のバックアップです。

Linking - React Native

Linking

Linkingはアプリへの、またはアプリ外部へのリンク機能を管理するインターフェイスです。

たとえば、リンクが有効かどうかを確認してから、リンクを動作させることができます。この時はエラー処理を同時に定義することが可能です。

Linking.canOpenURL(url).then(supported => {
if(!supported) {
console.log('can\'t open url: ' + url);
} else {
  return Linking.openURL(url);
}
} ).catch(err => console.error('An error has been occurred', err));

注:Androidのディープリンキングへのサポートを追加するには、 Enabling Deep Links for App Content - Add Intent Filters for Your Deep Links.を参照

もし現在のMainActivityのインスタンスへインテントを通知するには、MainActivityのlaunchModeをAndroidManifest.xmlのsingleTaskに設定すればよい。の詳細を別途参照のこと

<activity android:name=".MainActivity" android:launchMode="singleTask">

注:iOSでRCTLinkingに製作中のプロジェクトを関連付けたい場合はここ hereに書かれている手順を踏むこと アプリの実行中にほかのアプリへのリンクへ遷移したい場合は、*AppDelegate.mに以下を追加すること

#import "RCTLinkingManager.h" - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { return [RCTLinkingManager application:application openURL:url sourceApplication:sourceApplication annotation:annotation]; } // Only if your app is using [Universal Links](https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/AppSearch/UniversalLinks.html). - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler { return [RCTLinkingManager application:application continueUserActivity:userActivity restorationHandler:restorationHandler]; }

またLinkingに対してイベントリスナを設定したい場合はReactのComponentに以下のように追記すればよい

componentDidMount() { Linking.addEventListener('url', this._handleOpenURL); }, componentWillUnmount() { Linking.removeEventListener('url', this._handleOpenURL); }, _handleOpenURL(event) { console.log(event.url); }

メソッド

openURL(url)

指定されたURLを開く、URLの種類には、場所(例:“geo:37.484847,-122.148386”)、や連絡先、などが指定できる。しかし、これはシステムが実行可能なURLか検証する機能がないため、特にhttp(s)以外のプロトコルを利用する場合など、canOpenURLのコールバックとして利用することをおすすめします。

canOpenURL(url)

アプリが指定されたURLを扱うことができるか検証する。

注:Webにアクセスする場合はプロトコルを適切に設定すること

addEventListener(type,handler)

urlに対してアクションがあった場合のコールバックを設定する

removeEventListener|(type.handler)

urlに対してアクションがあった場合のコールバックを解除する。

getInitialURL()

アプリがリンクによって起動された時に、そのリンクを取得する。そうでなければ、null