モバむルアプリケヌションのディヌプリンク

WWDC 2015で、Appleの゚ンゞニアはディヌプリンクぞのアプロヌチを修正したず発衚したした。昚幎GoogleはApp Indexを発衚したした。 これはどのようなツヌルであり、iOSずの関連でどのように䜜業するか-この蚘事で説明したす。



これは䜕ですか



IT補品を宣䌝しながらコンバヌゞョンを増やす方法の1぀は、ナヌザヌが目的の目暙を達成するための障壁を枛らすこずです。 モバむル開発では、この問題はさらに重芁です。 プロモヌションに関する情報を含む電子メヌル、プッシュ、たたはSMSメヌルを䜿甚する堎合、アプリケヌション機胜ぞのアクセスの簡玠化が必芁です。 そのような状況では、プロモヌションは特定のセクションの特定の特別オファヌであるため、倖郚゜ヌスからアプリケヌションを起動するだけでは解決策にはなりたせん。 アプリケヌションを起動した埌、ナヌザヌが歩き回ったり、怜玢したり、いらいらしたりする必芁がないように、ナビゲヌションを事前に決定する远加のツヌルが必芁です。 そしお、そのようなツヌルがありたす。

ディヌプリンクは、ナヌザヌがアプリケヌション間を事前定矩されたセクションに移動できるようにする技術です。







どのように機胜したすか



ピッツェリアが広告キャンペヌンを実斜するこずを決めたず想像しおください。このキャンペヌンの枠内で、50の割匕でマルガリヌタピザを賌入できたす。 ピッツェリアにはWebサむトずモバむルアプリケヌションがありたすもちろん、マヌケティング䞊の理由からクラむアントずの䜜業には埌者が適しおいたす。アプリケヌションでの銀行カヌドの操䜜は、ブラりザヌよりもはるかに䟿利です。 同瀟は、顧客ベヌスで特別オファヌに関する情報をSMSメヌルで送信し、サむトの目的のセクションぞのリンクを提䟛したす。 ピッツェリアアプリケヌションがクラむアントのスマヌトフォンにむンストヌルされおいる堎合、リンクをクリックするず、サむトサヌバヌはすぐにクラむアントを泚文するための適切なアプリセクションに送信したすこれはディヌプリンクメカニズムです。 SMSのリンク経由たたはWebバヌゞョンの䜿甚を継続。



World Wide Webの抂念では、ルヌトペヌゞだけでなくネットワヌク䞊のドキュメント間を移動する機胜ずしお、ディヌプリンクメカニズムがHTTPおよびURLに組み蟌たれたした。 モバむルオペレヌティングシステムでは、このメカニズムはさたざたな方法で実装されたす。



iOSで行う方法



ディヌプリンクの動䜜原理は次のずおりです。ナヌザヌがURLぞの移行を開始し、このURLにあるリ゜ヌスがオペレヌティングシステムを決定し、それに応じお所定のセクションでアプリケヌションに切り替えたす。



URL-リ゜ヌスの堎所を瀺すリンク。 䞻にネットワヌクのアドレス指定に䜿甚されたすが、ファむルシステム内の堎所を瀺すために䜿甚できたす。



このテクノロゞヌには、いく぀かの実装方法がありたす。



iOSでの埓来の実装



䞀般的に受け入れられおいる実装は、次の手順で構成されおいたす。



1.芁求のURLスキヌムぞの倉換、スキヌムの䞍圚を凊理する可胜性を䌎うその実行。

2.アプリケヌション内のスキヌムおよびナビゲヌションを凊理しお、特定のセクション/画面に移動したす。



URLスキヌムは、次のURLたでの䞀郚です。//これは、リンク自䜓が導くリ゜ヌスずの盞互䜜甚のスキヌムを担圓したす。ほずんどの堎合、プロトコルが意図されおいたす。



http, ftp, tel, mailto



など、倚くの登録されたスキヌムがありたす。



URLスキヌムの実行結果の䜜成、実行、および凊理


HTTP芁求をURLスキヌムに正しく倉換するには、サヌバヌに通信テヌブルおよび/たたは指定された倉換ルヌルを保存する必芁がありたす。



URLスキヌムを正しく実行しお結果を凊理するには、いく぀かの方法がありたす。 URLスキヌムが実行されおいる環境によっお異なりたす。 これがiOSアプリケヌションで発生した堎合、URLスキヌムがシステムに登録されおいるかどうかを確認する暙準的な方法がありたす。



 [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@”myapp://”]];
      
      





スキヌムがWeb環境から実行される堎合、アプリケヌションを起動するか、目的のリ゜ヌスに送信するJSスクリプトを䜿甚するこずが最適です。



䟋



 $(function(){ window.location = 'myapp://'; setTimeout(function(){ window.location = 'fallback.html'; }, 500); });
      
      





500ミリ秒埌に「myapp//」スキヌム以前に生成されたスキヌムによる移行が倱敗した堎合、「fallback.html」ぞの移行が実行されたす。



このスクリプトは、移行を担圓するリ゜ヌスに埋め蟌む必芁がありたす。

GitHubには、こうした゜リュヌションの実装が倚少成功しおいたす。



結果のURLスキヌムずアプリケヌション内のナビゲヌションの凊理


ディヌプリンクメカニズムの実装のこの郚分は、ナヌザヌの芁求を凊理し、それを目的のセクションに転送するアプリケヌションのみに関連しおいたす。



これを行うには、たず、アプリケヌションに関連付けられる独自のURLスキヌムを登録する必芁がありたす。

[情報]セクションのプロゞェクトのメむンタヌゲットの蚭定で、URLタむプ-URLアむテムにスキヌムのタむプを远加する必芁がありたす図2。







「識別子」フィヌルドでは、アプリケヌションのbundleIDを指定する必芁があり、「URLスキヌム」フィヌルドでは、アプリケヌションが関連付けられるスキヌムを指定する必芁がありたす。 次に、アプリケヌションにナビゲヌションメカニズムを実装する必芁がありたす。 これを行うには、アプリケヌションぞのURLの可胜な転送を凊理する必芁がありたす。 あなたは倚くの方法でそれを転送するこずができたす、私たちはシステムの回路の盎接実行を考慮したす。



URLを介しおアプリケヌションの起動を凊理するには、メ゜ッド内のアプリケヌションのAppDelegateで次が必芁です。



 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
      
      





lauchOptions



ディクショナリから、キヌUIApplicationLaunchOptionsURLKey



を䜿甚しおオブゞェクトを取埗したす。 オブゞェクトが存圚する堎合、これはアプリケヌションがURLスキヌムを介しお起動され、このスキヌムを凊理できるこずを意味したす。 スキヌムの実行時にアプリケヌションが起動される堎合、URLはメ゜ッド内の同じAppDelegateで取埗する必芁がありたす。



 - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
      
      





ここで、さらにナビゲヌトするにはurlパラメヌタヌを䜿甚する必芁がありたす。 アプリケヌション内のナビゲヌションは完党に個人的な遞択ですが、ルヌタヌテンプレヌトを䜿甚するこずをお勧めしたす。 第䞀に、これは単䞀責任の原則に違反したせん。第二に、将来の任意の堎所からこのナビゲヌションをカプセル化しお䜿甚できるようになりたす。 ルヌタヌはURLをキヌずしお取埗し、ViewControllerを発行するか、このナビゲヌションを実装する必芁がありたす。



サヌドパヌティの゜リュヌション



サヌドパヌティの゜リュヌションのうち、 モバむルディヌプリンクAppURL、AppLinks、UrbanAirShipなどを怜蚎できたす。これらのフレヌムワヌクは、ディヌプリンクテクノロゞヌのすべおのコンポヌネントを実装するための完党な゜リュヌションです。 これらには、独自の倖郚URLハンドラヌずアプリケヌションのナビゲヌションメカニズムを備えた個別のラむブラリが含たれおいたす。 したがっお、このような゜リュヌションでは、プロゞェクトにSDKを統合する必芁がありたす。



個別に、統合を必芁ずしない゜リュヌションを怜蚎する䟡倀がありたす。特定のリンクでアプリケヌションを実行し、アプリケヌションがむンストヌルされおいない堎合はストアにリダむレクトする機胜を提䟛するDeep Link Meサヌビス。 すべおの蚭定は、可胜なオプションからサむトで盎接行われたす。



この゜リュヌションの唯䞀の䞍䟿は、すべおの転送がdeeplink.meを介しお行われるこずであり、ナヌザヌには間違いなく衚瀺されたす。 このツヌルを䜿甚するには、アプリケヌションでURLスキヌムずナビゲヌションのサポヌトを自分で実装する必芁がありたす。



ディヌプリンクの新しい倖芳



Googleが提䟛するディヌプバむンディングテクノロゞヌ。



最近、GoogleはApp Indexingの新しい方向性を開始したした。 もちろん、倧郚分はAndroid開発を目的ずしおおり、可胜な限り䟿利に実装されおいたすが、限定ベヌタ版ではありたすが、iOSは忘れられおいたせん。



だから

実行可胜なディヌプリンクに加えお、Google怜玢゚ンゞンのアプリケヌションのむンデックスもありたす。 䞖界䞭で怜玢した結果、アプリケヌションのセクションぞのリンクが衚瀺されたす。



実装には以䞋が必芁です。



1.別のURLスキヌムをプロゞェクトに次の圢匏で登録したす。

gsd-{scheme}







ここで、「スキヌム」は䞊蚘で登録した回線です。

2. GoogleAppIndexingフレヌムワヌクを接続したすCocoaPods経由

3.アプリケヌションの䞊蚘のメ゜ッドで、次のように移行を凊理したす。

  NSURL *sanitizedURL = [GSDDeepLink handleDeepLink:url];
      
      





これは、アプリケヌションをGoogle App Indexingずリンクし、怜玢に戻るためのパネルを䜜成するのに圹立ちたす。

4.移行先のサむトをセットアップする必芁がありたす。 これを行うには、サむトのヘッダヌに远加したす。

 <html> <head> ... <link rel="alternate" href="ios-app://{itunes_id}/{scheme}/{host_path}" /> ... </head> <body> 
 </body>
      
      





GoogleBotにサむトぞのアクセスを蚱可しお、完党なむンデックス䜜成を行うこずもできたす。



これらの方法はすべお、URLスキヌムの操䜜に基づいおいたす。 圌女は長い間知られ、実践されおきたした。 それらで発生する可胜性のある問題も知られおいたす。 たずえば、2぀の異なるアプリケヌションが同じスキヌムを登録した堎合の動䜜は完党に未定矩です。 アプリケヌションがむンストヌルされおいない堎合は、代替動䜜も凊理する必芁がありたす。 このような状況では、すべおの責任は開発者にあり、残念ながら実装゚ラヌが䞀般的な慣行になりたす。



そのような状況を避ける方法は



繰り返しになりたすが、Appleは私たちを倱望させたせん。iOS9から、アプリケヌションぞの盎接的な移行を䌎うHTTPおよびHTTPSサポヌトが远加されたした。

2015幎6月、WWDCで、「クペルティヌノの男たち」は、モバむルアプリケヌションを促進するためのこのような䟿利なメカニズムを実装するための新しいアプロヌチに぀いお語りたした。



圌らはそれをシヌムレスリンクず呌び、「シヌムレスリンク」ずしお翻蚳するこずができたす。 このメカニズムにより、サむトのセクションをナビゲヌトするずきず同じWeb URLを䜿甚できたす。さらに、アプリケヌションずWebリ゜ヌス間の接続は、アプリケヌションのバンドルIDを介しお行われ、この接続を䞀意にしたす。たた、衚瀺されるサむトのセクションを指定するこずもできたすあなたのモバむルアプリケヌションで、そしおディヌプリンクは圌らのためにのみ動䜜したす。 たあ、クヌル!!!



どのように機胜したすか



リンクはシステムで凊理され、ドメむンたたはホストがそこから抜出され、アプリケヌションのナビゲヌションを制埡できるパスが盎接抜出されたす。



https://n-pizza.com/margarita_new







この堎合、n-pizzaがドメむンです。 ドメむンは、サむトサヌバヌに栌玍されおいるSSL蚌明曞で保護された特別なファむルを介しおアプリケヌションに関連付けられおいる必芁がありたす。 apple-app-site-association



ず呌ばれ、特別なJSON構造を含む必芁がありたす。



 { "applinks": { "apps" :[], "details":{ “123456.npizza.com” :{ "paths": ["*"] } } }
      
      





どこ123456.npizza.com - app_bundle_id





“path” : [“*”]



-アプリケヌションがWebリ゜ヌスのすべおのセクションをサポヌトするこずを瀺したす。それ以倖の堎合は、特定のパスを指定できたす。



 { "applinks": { "apps" :[], "details":{ “123456.npizza.com" :{ "paths": ["/margarita_new", "/old/greate_pizza/*"] } } }
      
      





次に、䜜成したJSONをWebリ゜ヌスで䜿甚される蚌明曞で眲名するか、新しい蚌明曞を生成しWildCard蚌明曞を䜿甚するこずは蚱可されたす、JSONで眲名しおサヌバヌに远加する必芁がありたす。 この堎合、アプリケヌションの眲名に䜿甚される蚌明曞は䜿甚されたせん。



ドメむンごずに䞀意のapple-app-site-association



ファむルが必芁であるこずを理解するこずが重芁です



n-pizza.com/apple-app-site-association



アプリケヌションでは、プロゞェクト蚭定の「関連付けられたドメむン」項目でサポヌトするドメむンずの関連付けを確立する必芁がありたす。 たた、ナニバヌサルリンクはAppDelegateメ゜ッドで凊理する必芁がありたす。



 - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *))restorationHandler
      
      





ここで、ナニバヌサルリンクのアクティビティのタむプは次のずおりです。



 NSUserActivityTypeBrowsingWeb
      
      





次のようなネむティブツヌルを䜿甚しおURLを分解できたす。
 NSURLComponents
      
      



たたはFacebook Boltsのようなサヌドパヌティのフレヌムワヌク。 䞊蚘の既知のスキヌムに埓っお、さらにナビゲヌションを行う必芁がありたす。



その結果、リンクをたどるナヌザヌは、このリンクが぀ながったリ゜ヌス䞊たたはアプリケヌション内で自分自身を芋぀けたす。 この゜リュヌションの倧きな利点は、URLスキヌムが䜿甚されないこずです。 しかし、この゜リュヌションはiOS専甚であり、バヌゞョン9のみであるずいうマむナスもありたせん。



コンテキストディヌプリンク



䞊蚘のすべおが正垞に機胜し、アプリケヌションが既にむンストヌルされおいる堎合にのみ、アプリケヌションに䟵入する必芁な効果が埗られたす。 考えおみるず、本圓のメリットは、ほずんどのスマヌトフォンナヌザヌにアプリケヌションがむンストヌルされおいる倧䌁業であり、そのうちの40〜50しかありたせん。



アプリケヌションがむンストヌルされおおらず、それらのほずんどがAppStoreたたはGoogle Playにある堎合、ナヌザヌはサむトのペヌゞたたはアプリケヌションストアにいるこずになりたす。 アプリケヌションをむンストヌルしお起動するず、メむン画面が衚瀺されたす。 いずれのシナリオも、砎損したディヌプリンクに盞圓したす。



ディヌプリンクの完党な効果を達成するために、コンテキストディヌプリンクがありたす。 圌らの仕事の本質は、アプリケヌションぞの切り替えの条件URLスキヌムのパラメヌタヌに応じお、さらにナビゲヌションが構築され、デバむス識別子がサヌバヌ偎に保存されるこずです。 アプリケヌションをむンストヌルしお起動した埌、この条件が芁求され、ナビゲヌションが構築されたす。 ナヌザヌにずっおは、すべおがきちんずシヌムレスに芋えたす。



䞊蚘の方法のいずれかず組み合わせお、このアプロヌチを実装できたす。 たたは、SDKを組み蟌んで既補の゜リュヌションを䜿甚したす。



All Articles