{"id":2108,"date":"2022-03-02T17:07:11","date_gmt":"2022-03-02T08:07:11","guid":{"rendered":"http:\/\/idealive.jp\/blog\/?p=2108"},"modified":"2022-03-03T13:40:29","modified_gmt":"2022-03-03T04:40:29","slug":"flutter%e3%81%a7%e3%81%aedynamic-links%e3%81%ae%e5%b0%8e%e5%85%a5","status":"publish","type":"post","link":"https:\/\/idealive.jp\/blog\/2022\/03\/02\/flutter%e3%81%a7%e3%81%aedynamic-links%e3%81%ae%e5%b0%8e%e5%85%a5\/","title":{"rendered":"Flutter\u3067\u306eDynamic Links\u306e\u5c0e\u5165"},"content":{"rendered":"<p>&nbsp;<\/p>\n<p>\u7686\u3055\u3093\u3053\u3093\u306b\u3061\u306f\u3001r.matsumoto\u3067\u3059\u3002<br \/>\n\u4eca\u56de\u306fFlutter\u3067Firebase\u306eDynamic Links\u3092\u7528\u3044\u305f\u5b9f\u88c5\u3092\u884c\u3063\u305f\u306e\u3067\u305d\u3061\u3089\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u3066\u3044\u304d\u305f\u3044\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n<h6>Dynamic Links\u3068\u306f\uff1f<\/h6>\n<p>ios\u3001android\u30a2\u30d7\u30ea\u306e\u300c\u30c7\u30a3\u30fc\u30d7\u30ea\u30f3\u30af\u300d\u3092\u767a\u884c\u51fa\u6765\u308bFirebase\u306e\u30d7\u30ed\u30c0\u30af\u30c8\u306e\u4e00\u3064\u3067\u3059\u3002<br \/>\n\u307e\u305fios\u3001android\u3067\u540c\u3058URL\u3092\u4f7f\u3044\u56de\u3059\u3053\u3068\u304c\u53ef\u80fd\u3067\u30a2\u30af\u30bb\u30b9\u3055\u308c\u305f\u7aef\u672b\u306e\u72b6\u614b\u306b\u3088\u3063\u3066\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u5206\u5c90\u304c\u53ef\u80fd\u3067\u3059\u3002<br \/>\n\u30fb\u30a2\u30d7\u30ea\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u6e08\u307f\u306e\u7aef\u672b\u306e\u5834\u5408\u30a2\u30d7\u30ea\u3092\u8d77\u52d5<br \/>\n\u30fb\u30a2\u30d7\u30ea\u672a\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306e\u5834\u5408\u30b9\u30c8\u30a2\u3078\u8a98\u5c0e<\/p>\n<p>\u305d\u306e\u4ed6\u306b\u3082Dynamic Links\u3067\u4f7f\u7528\u3059\u308b\u30c9\u30e1\u30a4\u30f3\u540d\u3082\u7279\u306b\u3053\u3060\u308f\u308a\u304c\u7121\u3044\u5834\u5408Firebase\u5074\u3067\u7528\u610f\u3057\u3066\u304f\u308c\u308b\u306e\u3082\u9b45\u529b\u306e\u4e00\u3064\u3060\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n<p>&nbsp;<\/p>\n<h6>Android\u3001iOS\u305d\u308c\u305e\u308c\u306eDynamic Links\u306e\u8a2d\u5b9a<\/h6>\n<p>\u3053\u3053\u304b\u3089\u306fFirebase\u306e\u5c0e\u5165\u3001Firebase\u5074\u306eDynamic Links\u306e\u8a2d\u5b9a\u304c\u5b8c\u4e86\u3057\u3066\u3044\u308b\u524d\u63d0\u3067\u304a\u8a71\u3092\u9032\u3081\u3055\u305b\u3066\u3044\u305f\u3060\u304d\u307e\u3059\u3002<\/p>\n<p>android\u5074\u306e\u8a2d\u5b9a\u306f\u300candroid\/app\/src\/main\/AndroidManifest.xml\u300d\u3092\u958b\u304d\u4ee5\u4e0b\u3092\u8ffd\u8a18\u3057\u307e\u3059\u3002<\/p>\n<p>\u300chogehoge.page.link\u300d\u306e\u7b87\u6240\u306f\u81ea\u8eab\u306e\u8a2d\u5b9a\u3057\u305f\u3044Dynamic Links\u3092\u8a18\u5165\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<pre class=\"lang:default decode:true\" title=\"AndroidManifest.xml\">&lt;manifest&gt;\r\n    &lt;application&gt;\r\n        &lt;activity&gt;\r\n            &lt;!-- \u3053\u3053\u304b\u3089 --&gt;\r\n            &lt;intent-filter&gt;\r\n                &lt;action android:name=\"android.intent.action.VIEW\"\/&gt;\r\n                &lt;category android:name=\"android.intent.category.DEFAULT\"\/&gt;\r\n                &lt;category android:name=\"android.intent.category.BROWSABLE\"\/&gt;\r\n                &lt;data\r\n                    android:host=\"hogehoge.page.link\"\r\n                    android:scheme=\"https\"\/&gt;\r\n            &lt;\/intent-filter&gt;\r\n            &lt;!-- \u3053\u3053\u307e\u3067\u8ffd\u8a18 --&gt;\r\n        &lt;\/activity&gt;\r\n    &lt;\/application&gt;\r\n&lt;\/manifest&gt;<\/pre>\n<p>&nbsp;<\/p>\n<p>ios\u5074\u306e\u8a2d\u5b9a\u306f\u300cios\/Runner\/Runner.entitlements\u300d\u3092\u958b\u304d\u4ee5\u4e0b\u3092\u8ffd\u8a18\u3057\u307e\u3059\u3002<\/p>\n<p>\u3053\u3061\u3089\u306e\u8ffd\u8a18\u306fXcode\u304b\u3089\u8a2d\u5b9a\u3057\u3066\u3082\u5927\u4e08\u592b\u3067\u3059\u3002<\/p>\n<pre class=\"lang:default decode:true \" title=\"Runner.entitlements\">&lt;plist&gt;\r\n    &lt;dict&gt;\r\n        &lt;!-- \u3053\u3053\u304b\u3089 --&gt;\r\n\t&lt;key&gt;com.apple.developer.associated-domains&lt;\/key&gt;\r\n\t&lt;array&gt;\r\n\t\t&lt;string&gt;applinks:hogehoge.page.link&lt;\/string&gt;\r\n\t&lt;\/array&gt;\r\n        &lt;!-- \u3053\u3053\u307e\u3067\u8ffd\u8a18 --&gt;\r\n    &lt;\/dict&gt;\r\n&lt;\/plist&gt;<\/pre>\n<p>&nbsp;<\/p>\n<h6>Flutter\u5074\u306e\u5b9f\u88c5<\/h6>\n<p>Dynamic Links\u306eURL\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306e\u5024\u3092\u53d7\u3051\u53d6\u308b\u70ba\u306b\u300curl_launcher\u300d\u3068\u3044\u3046\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/p>\n<p>pubspec.yaml\u3092\u958b\u304d\u4ee5\u4e0b\u3092\u8ffd\u8a18\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"lang:yaml decode:true\" title=\"pubspec.yaml\">dependencies:\r\n  # \u4ee5\u4e0b\u3092\u8ffd\u8a18\r\n  url_launcher:<\/pre>\n<p>&nbsp;<\/p>\n<p>URL\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u306e\u5024\u3092\u53d7\u3051\u53d6\u308a\u305f\u3044\u753b\u9762\u306e\u30da\u30fc\u30b8\u306b\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u5b9f\u88c5\u3092\u3057\u307e\u3059\u3002<\/p>\n<pre class=\"lang:default decode:true\" title=\"hogehoge.dart\">  @override\r\n  void initState() {\r\n    super.initState();\r\n    uriLinkStream.listen((uri) {\r\n      List&lt;String&gt; paths = uri.toString().split('?');\r\n      if (paths.length &gt; 1) {\r\n        Map parameters = Uri.splitQueryString(paths[1]);\r\n        if (parameters['mode'] == 'resetPassword') {\r\n          _resetPassword(parameters['oobCode']);\r\n        } else if (parameters['mode'] == 'verifyEmail') {\r\n          _verifyEmail(parameters['oobCode']);\r\n        }\r\n      }\r\n    });\r\n  }<\/pre>\n<p>\u4e0a\u8a18\u306e\u30bd\u30fc\u30b9\u3067\u3059\u304c\u300chttps:\/\/hogehoge.page.link?mode=resetPassword\u300d\u306e\u3088\u3046\u306aURL\u3067\u9077\u79fb\u3057\u3066\u304d\u305f\u5834\u5408_resetPassword\u304c\u52d5\u304d\u307e\u3059\u3002<\/p>\n<p>Dynamic Links\u306e\u5c0e\u5165\u3001\u5b9f\u88c5\u306f\u4ee5\u4e0a\u3068\u306a\u308a\u307e\u3059\u3002<\/p>\n<p>\u3053\u3053\u307e\u3067\u304a\u4ed8\u304d\u5408\u3044\u3044\u305f\u3060\u304d\u3042\u308a\u304c\u3068\u3046\u3054\u3056\u3044\u307e\u3057\u305f\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; \u7686\u3055\u3093\u3053\u3093\u306b\u3061\u306f\u3001r.matsumoto\u3067\u3059\u3002 \u4eca\u56de\u306fFlutter\u3067Firebase\u306eDynamic Links\u3092\u7528\u3044\u305f\u5b9f\u88c5\u3092\u884c\u3063\u305f\u306e\u3067\u305d\u3061\u3089\u306b\u3064\u3044\u3066\u89e3\u8aac\u3057\u3066\u3044\u304d\u305f\u3044\u3068\u601d\u3044\u307e\u3059\u3002 Dynamic Link&#8230;<a class=\"read-more-link button\" href=\"https:\/\/idealive.jp\/blog\/2022\/03\/02\/flutter%e3%81%a7%e3%81%aedynamic-links%e3%81%ae%e5%b0%8e%e5%85%a5\/\">\u7d9a\u304d\u3092\u8aad\u3080<\/a><\/p>\n","protected":false},"author":10,"featured_media":2109,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11,12],"tags":[40,39,38,37,41],"class_list":["post-2108","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-app-dev","category-x-platform","tag-android","tag-dynamic-links","tag-firebase","tag-flutter","tag-ios"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/idealive.jp\/blog\/wp-json\/wp\/v2\/posts\/2108"}],"collection":[{"href":"https:\/\/idealive.jp\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/idealive.jp\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/idealive.jp\/blog\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/idealive.jp\/blog\/wp-json\/wp\/v2\/comments?post=2108"}],"version-history":[{"count":8,"href":"https:\/\/idealive.jp\/blog\/wp-json\/wp\/v2\/posts\/2108\/revisions"}],"predecessor-version":[{"id":2119,"href":"https:\/\/idealive.jp\/blog\/wp-json\/wp\/v2\/posts\/2108\/revisions\/2119"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/idealive.jp\/blog\/wp-json\/wp\/v2\/media\/2109"}],"wp:attachment":[{"href":"https:\/\/idealive.jp\/blog\/wp-json\/wp\/v2\/media?parent=2108"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/idealive.jp\/blog\/wp-json\/wp\/v2\/categories?post=2108"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/idealive.jp\/blog\/wp-json\/wp\/v2\/tags?post=2108"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}