web-dev-qa-db-ja.com

モバイルアプリの複数のバージョンをサポート

現在サーバーへのWebインターフェイスのみをサポートしている既存のアプリケーションを補足するために、ネイティブモバイルアプリケーションのスイートを構築しています。アプリケーションは、クライアントが独自のインフラストラクチャにインストールしてホストすることも、それを利用したいクライアントのために自分でホストすることもできます。大企業のお客様は通常、セルフホスティングを選択し、小規模のお客様はホスティングオプションを選択しました。

アプリケーションの複数のバージョンをサポートする必要があります。すべてのお客様が同時にアップグレードを希望するわけではありません。 Webインターフェースを使用すると、サーバーのインストールに関連付けられているサーバーのバージョンがWebインターフェースで自動的に使用されるため、複数のバージョンのサポートは難しくありません。通常、App Storeで利用できるアプリが1つしかないモバイルアプリケーションでは、モバイルアプリのさまざまなレベルのサーバーAPIと機能のサポートが課題になります。他の人が問題をどのように解決しているか知りたいです。私の心には、次のようなオプションがあります。

  1. アプリストアでアプリの複数のバージョンをサポートします。
  2. モバイルアプリケーションにサポートを組み込み、通信しているサーバーのAPIバージョンを自動的に決定し、関連するサーバーAPIエンドポイントに呼び出しをルーティングします。また、サーバーのさまざまなバージョンで利用できる機能に基づいて、モバイルアプリケーションの機能を有効/無効にするための、ある種の機能切り替えメカニズムの使用も紹介します。
  3. アプリのデプロイにアプリストアを使用しないでください。アプリのダウンロードとインストールに使用できるバージョン固有のURLをユーザーに示します。

オプション1-IMOはアプリのユーザーを混乱させます。また、実際には2つの別個のアプリケーションであるため、あるバージョンのアプリから次のバージョンへの適切な移行パスはありません。

オプション2-一方、UIのビジュアルは基本的に、通信しているサーバーAPIのバージョンで使用可能な機能に適応する必要があることを考慮すると、すぐに非常に複雑になる可能性があります。また、必要なサーバーAPI呼び出しのさまざまなバージョンをサポートする必要があります。

オプション-Android世界でアプリのサイドローディングを行うときに可能ですが、iOSでサポートされていないことがわかっており、確信がありません今後のWindows 10モバイルアプリの状況はどうなるか.

問題に取り組むために他にどのようなアプローチがありますか?私たちがネイティブアプリを作成しているという事実について議論しないでください。それは私が求めていることではありません。サーバーAPIの異なるバージョンと通信する同じネイティブモバイルアプリの複数のバージョンをサポートする問題に他の人々がどのように取り組んでいるのかについてのガイダンスを探しています。

9
Carel

何が起こるか見てください...

オプション1は、ユーザーが間違ったバージョンをインストールしたときにサポート呼び出しを生成します。常に最新のバージョンを読んだり選択したりできないユーザーが1人いるはずです。そのため、ユーザーは自分がよりよく知っていると思います。また、必要に応じて修正をバックポートする可能性のあるバージョンが多数あります。

オプション2は、UIコードに複雑さを追加します。その量は、UIがどのように適切に記述されているかによって異なります。しかし、それは最高のユーザーエクスペリエンスを持っています。

オプション3はiOSでは実行できません(AndroidおよびWindowsでは特定の構成で許可されます)。これは、プラットフォームごとに異なる動作を意味します。それはトラブルのレシピである物事を矛盾させます。

したがって、これらのうち、レスポンシブUIを作成し、適切なエンドポイントをターゲットにすることが、ユーザーにとって最善の方法です。

2
James Snell

私はこれを少し異なるコンテキストで扱いましたが、私たちが思いついたのは、あなたが私たちの公開サーバーを使用している場合、アップグレードを要求するということでした。セルフホストの場合は、好きなバージョンをそのまま使用できます。

それが最もお客様に優しい回答ではないことは知っています。状況によっては、それが選択肢にならない場合もありますが、それが最終的に私たちが取ったスタンスでした。

注意すべき点の1つは、セキュリティの問題や重大なバグが見つかったときにセルフホストされていた古いベースラインに基づいて、多くの1回限りの作業を行わなければならなくなったことです。複数のバージョンをサポートしている場合は、その方法に関係なく、最終的に複数のAPIを完全にサポートする場合でも、確実な構成管理とソース管理を確実に行う必要があります。バグを見つけたら、古いブランチで修正しなければならない可能性があるため、バグが発生した元の場所に時間をかけて戻ってください。

1
GMLewisII

APIのバージョニングは問題ありませんが、これにはUIレイヤーでさらに作業が必要になります

b)また、サーバーはAPIの複数のバージョンをサポートする必要があります。

サーバーAPIはモバイルクライアントのみに対応していますか、それとも他のクライアントも持っていますか。それが他のクライアントに対応している場合は、モバイルの場合のみ、基本的にはバージョン管理のサポートを備えた一端でサーバーAPIを呼び出すラッパーAPIを取得することができます。

基本的に、サーバーAPIによって提供されるパブリックAPIのような他のクライアントがある場合、サーバーAPIでのバージョン管理は困難です。それ以外の場合は単純です。

私の2セント。

0
Chandra