Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Navigation x Deep Link 結構大変だった話

KKusumi
November 27, 2019

Navigation x Deep Link 結構大変だった話

KKusumi

November 27, 2019
Tweet

More Decks by KKusumi

Other Decks in Programming

Transcript

  1. About Me 2 • Katsumi Kusumi(@kl_tech) • and factory •

    Android App Engineer • ອըΞϓϦ࡞ͬͯ·͢ɻ
  2. Navigationͱ͸ 7 By Android developers documentation • φϏήʔγϣϯͱ͸ɺϢʔβʔ͕ΞϓϦ಺ͷ༷ʑͳίϯςϯπؒΛҠಈ͢Δૢ࡞ Λࢦ͠·͢ɻ •

    Android JetpackͷNavigationίϯϙʔωϯτ͸ɺ୯७ͳϘλϯΫϦοΫ͔Βɺ ΞϓϦόʔ΍φϏήʔγϣϯυϩϫʔͳͲͷෳࡶͳύλʔϯ·Ͱɺ͞·͟·ͳφ ϏήʔγϣϯΛ࣮૷͢Δͷʹ໾ཱͪ·͢ɻ • ·ͨɺNavigationίϯϙʔωϯτ͸ɺ֬཰͞Εͨݪଇͷηοτʹै͏͜ͱʹΑ ΓɺҰ؏ੑͷ͋Δ༧ଌ͠΍͍͢ϢʔβʔΤΫεϖϦΤϯεΛอূ͠·͢ɻ
  3. NavigationΛೖΕΔϝϦοτ 9 • ϑϥάϝϯτભҠͷτϥϯβΫγϣϯ؅ཧΛͯ͘͠ΕΔ • όοΫϘλϯͷ੍ޚΛͯ͘͠ΕΔ • ը໘ભҠ࣌ͷඪ४ΞχϝʔγϣϯΛఏڙ͍ͯ͠Δ • Deep

    LinkΛ؆୯ʹ࣮૷Ͱ͖Δ • ࠷খݶͷ௥Ճ࡞ۀͰɺφϏήʔγϣϯυϩϫʔ΍ϘτϜφϏήʔγϣ ϯΛ࣮૷Ͱ͖Δ • Fragmentؒͷ஋ͷड͚౉͕͠؆୯…ɻͳͲͳͲɻ
  4. NavigationΛೖΕΔϝϦοτ 10 • ϑϥάϝϯτભҠͷτϥϯβΫγϣϯ؅ཧΛͯ͘͠ΕΔ • όοΫϘλϯͷ੍ޚΛͯ͘͠ΕΔ • ը໘ભҠ࣌ͷඪ४ΞχϝʔγϣϯΛఏڙ͍ͯ͠Δ • Deep

    LinkΛ؆୯ʹ࣮૷Ͱ͖Δ • ࠷খݶͷ௥Ճ࡞ۀͰɺφϏήʔγϣϯυϩϫʔ΍ϘτϜφϏήʔγϣ ϯΛ࣮૷Ͱ͖Δ • Fragmentؒͷ஋ͷड͚౉͕͠؆୯…ɻͳͲͳͲɻ
  5. NavigationGraph 14 <?xml version="1.0" encoding="utf-8"?> <navigation xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/navigation" app:startDestination="@id/fragment_sample">

    <fragment android:id="@+id/fragment_sample" android:name="SampleFragment" android:label="fragment_samplea"> <action android:id="@+id/action_sampleA_to_sampleB" app:destination=“@id/fragment_sampleb” /> <argument android:name="arg" app:argType="integer" /> <deepLink app:uri="https://www.google.com?arg={arg}"/> </fragment> </navigation>
  6. NavigationGraph 15 <?xml version="1.0" encoding="utf-8"?> <navigation xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/navigation" app:startDestination="@id/fragment_sample">

    <fragment android:id="@+id/fragment_sample" android:name="SampleFragment" android:label="fragment_samplea"> <action android:id="@+id/action_sampleA_to_sampleB" app:destination=“@id/fragment_sampleb” /> <argument android:name="arg" app:argType="integer" /> <deepLink app:uri="https://www.google.com?arg={arg}"/> </fragment> </navigation>
  7. NavigationGraph 16 <?xml version="1.0" encoding="utf-8"?> <navigation xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/navigation" app:startDestination="@id/fragment_sample">

    <fragment android:id="@+id/fragment_sample" android:name="SampleFragment" android:label="fragment_samplea"> <action android:id="@+id/action_sampleA_to_sampleB" app:destination=“@id/fragment_sampleb” /> <argument android:name="arg" app:argType="integer" /> <deepLink app:uri="https://www.google.com?arg={arg}"/> </fragment> </navigation> • Navigation Graphͷఆٛ • ͜ͷதʹ࢖༻͢ΔࢠNavigationGraph΍ FragmentΛ௥Ճ͍ͯ͘͠ɻ • startDestinationɿ͜ͷNavigationGraph ʹೖͬͨ࣌ʹॳΊͯදࣔ͢ΔFragment
  8. NavigationGraph 17 <?xml version="1.0" encoding="utf-8"?> <navigation xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/navigation" app:startDestination="@id/fragment_sample">

    <fragment android:id="@+id/fragment_sample" android:name="SampleFragment" android:label="fragment_samplea"> <action android:id="@+id/action_sampleA_to_sampleB" app:destination="@id/fragment_sampleb" /> <argument android:name="arg" app:argType="integer" /> <deepLink app:uri="https://www.google.com?arg={arg}"/> </fragment> </navigation> • Fragmentͷఆٛ • ͜ͷதʹ࢖༻͢ΔҾ਺΍ɺઃఆ͢Δ Deep LinkͷURLΛهࡌ͢Δɻ
  9. NavigationGraph 18 <?xml version="1.0" encoding="utf-8"?> <navigation xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/navigation" app:startDestination="@id/fragment_sample">

    <fragment android:id="@+id/fragment_sample" android:name="SampleFragment" android:label="fragment_samplea"> <action android:id="@+id/action_sampleA_to_sampleB" app:destination=“@id/fragment_sampleb" /> <argument android:name="arg" app:argType="integer" /> <deepLink app:uri="https://www.google.com?arg={arg}"/> </fragment> </navigation> • ը໘ભҠͷఆٛ • ݱࡏͷFragment͔ΒͲͷFragmentʹભ Ҡ͢Δ͔͕ॻ͔Ε͍ͯΔɻ • ࠓͩͬͨΒSampleA͔ΒSampleB
  10. NavigationGraph 19 <?xml version="1.0" encoding="utf-8"?> <navigation xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/navigation" app:startDestination="@id/fragment_sample">

    <fragment android:id="@+id/fragment_sample" android:name="SampleFragment" android:label="fragment_samplea"> <action android:id="@+id/action_sampleA_to_sampleB" app:destination="@id/fragment_sampleb" /> <argument android:name="arg" app:argType="integer" /> <deepLink app:uri="https://www.google.com?arg={arg}"/> </fragment> </navigation> • FragmentͷҾ਺ • Deep Linkͷύϥϝʔλ໊ͱҰக͍ͯ͠ Δඞཁ͕͋Δɻ
  11. NavigationGraph 20 <?xml version="1.0" encoding="utf-8"?> <navigation xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/navigation" app:startDestination="@id/fragment_sample">

    <fragment android:id="@+id/fragment_sample" android:name="SampleFragment" android:label="fragment_samplea"> <action android:id="@+id/action_sampleA_to_sampleB" app:destination="@id/fragment_sampleb" /> <argument android:name="arg" app:argType="integer" /> <deepLink app:uri="https://www.google.com?arg={arg}"/> </fragment> </navigation> • Deep LinkͷURL • ͜Εઃఆ͢ΔͱɺϦϯΫ౿Μͩ࣌ʹભҠ Ͱ͖ΔΑ͏ʹͳΔɻ