現在サーバーへのWebインターフェイスのみをサポートしている既存のアプリケーションを補足するために、ネイティブモバイルアプリケーションのスイートを構築しています。アプリケーションは、クライアントが独自のインフラストラクチャにインストールしてホストすることも、それを利用したいクライアントのために自分でホストすることもできます。大企業のお客様は通常、セルフホスティングを選択し、小規模のお客様はホスティングオプションを選択しました。
アプリケーションの複数のバージョンをサポートする必要があります。すべてのお客様が同時にアップグレードを希望するわけではありません。 Webインターフェースを使用すると、サーバーのインストールに関連付けられているサーバーのバージョンがWebインターフェースで自動的に使用されるため、複数のバージョンのサポートは難しくありません。通常、App Storeで利用できるアプリが1つしかないモバイルアプリケーションでは、モバイルアプリのさまざまなレベルのサーバーAPIと機能のサポートが課題になります。他の人が問題をどのように解決しているか知りたいです。私の心には、次のようなオプションがあります。
オプション1-IMOはアプリのユーザーを混乱させます。また、実際には2つの別個のアプリケーションであるため、あるバージョンのアプリから次のバージョンへの適切な移行パスはありません。
オプション2-一方、UIのビジュアルは基本的に、通信しているサーバーAPIのバージョンで使用可能な機能に適応する必要があることを考慮すると、すぐに非常に複雑になる可能性があります。また、必要なサーバーAPI呼び出しのさまざまなバージョンをサポートする必要があります。
オプション-Android世界でアプリのサイドローディングを行うときに可能ですが、iOSでサポートされていないことがわかっており、確信がありません今後のWindows 10モバイルアプリの状況はどうなるか.
問題に取り組むために他にどのようなアプローチがありますか?私たちがネイティブアプリを作成しているという事実について議論しないでください。それは私が求めていることではありません。サーバーAPIの異なるバージョンと通信する同じネイティブモバイルアプリの複数のバージョンをサポートする問題に他の人々がどのように取り組んでいるのかについてのガイダンスを探しています。
何が起こるか見てください...
オプション1は、ユーザーが間違ったバージョンをインストールしたときにサポート呼び出しを生成します。常に最新のバージョンを読んだり選択したりできないユーザーが1人いるはずです。そのため、ユーザーは自分がよりよく知っていると思います。また、必要に応じて修正をバックポートする可能性のあるバージョンが多数あります。
オプション2は、UIコードに複雑さを追加します。その量は、UIがどのように適切に記述されているかによって異なります。しかし、それは最高のユーザーエクスペリエンスを持っています。
オプション3はiOSでは実行できません(AndroidおよびWindowsでは特定の構成で許可されます)。これは、プラットフォームごとに異なる動作を意味します。それはトラブルのレシピである物事を矛盾させます。
したがって、これらのうち、レスポンシブUIを作成し、適切なエンドポイントをターゲットにすることが、ユーザーにとって最善の方法です。
私はこれを少し異なるコンテキストで扱いましたが、私たちが思いついたのは、あなたが私たちの公開サーバーを使用している場合、アップグレードを要求するということでした。セルフホストの場合は、好きなバージョンをそのまま使用できます。
それが最もお客様に優しい回答ではないことは知っています。状況によっては、それが選択肢にならない場合もありますが、それが最終的に私たちが取ったスタンスでした。
注意すべき点の1つは、セキュリティの問題や重大なバグが見つかったときにセルフホストされていた古いベースラインに基づいて、多くの1回限りの作業を行わなければならなくなったことです。複数のバージョンをサポートしている場合は、その方法に関係なく、最終的に複数のAPIを完全にサポートする場合でも、確実な構成管理とソース管理を確実に行う必要があります。バグを見つけたら、古いブランチで修正しなければならない可能性があるため、バグが発生した元の場所に時間をかけて戻ってください。
APIのバージョニングは問題ありませんが、これにはUIレイヤーでさらに作業が必要になります
b)また、サーバーはAPIの複数のバージョンをサポートする必要があります。
サーバーAPIはモバイルクライアントのみに対応していますか、それとも他のクライアントも持っていますか。それが他のクライアントに対応している場合は、モバイルの場合のみ、基本的にはバージョン管理のサポートを備えた一端でサーバーAPIを呼び出すラッパーAPIを取得することができます。
基本的に、サーバーAPIによって提供されるパブリックAPIのような他のクライアントがある場合、サーバーAPIでのバージョン管理は困難です。それ以外の場合は単純です。
私の2セント。