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


10

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

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

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

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

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

オプション3-アプリのサイドローディングを行う場合、Androidの世界で可能ですが、私の知る限り、iOSではサポートされておらず、今後のWindows 10モバイルアプリの画像はどのようになるかわかりません。

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


1
オプション3は、Windows Phoneの世界でも実行できます。企業インフラストラクチャに接続されている限り、使用するアプリを指定できます。
James Snell

回答:


2

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

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

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

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

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


1

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

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

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


1
リリースをずらすことについてどうしますか?最初にそれを試すためにバックエンドを数人の顧客にのみ展開したい場合、すべての顧客にクライアントのアップグレードを遅らせるように指示せずにこれをどのように行いますか?
メルボルン開発者、

0

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

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

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

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

私の2セント。


サーバーAPIは、モバイルクライアントだけでなく、複数のクライアントに対応します。ラッパーAPIを使用して、APIゲートウェイパターンの
Carel
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.