web-dev-qa-db-ja.com

本番モバイルアプリがAPIエンドポイントを開発サーバーに切り替えることができるようにするための可能な/最良の方法は何ですか?

api.myapp.comでAPIを使用するモバイルアプリがあるとします。私の個人用開発マシンmymac.localと本番標準のテストサーバーtest.myapp.comでアプリをテストできるようにしたいと思います。

本番環境のモバイルアプリが代替のAPIエンドポイントに切り替えられるようにするための最良の方法は何ですか?

私が考えた短所で私が考えたオプション:

  1. アプリ内のどこかに、開発者だけが知っているイースターエッグを置きます。例えばロゴを5回タップすると、APIエンドポイント入力ボックスがポップアップします。

    短所:イースターエッグが発見される。

  2. 通常の設定メニューに設定オプションを追加します(私はTwitterがこれを行っていたと思います)。

    短所:アマチュアに見えますか?

  3. myapp://change_api?endpoint=api.mysite.comのようなURLスキーマを作成します

    短所:これは使用するのが少し面倒です。

私が考えていない、これを行う他のより良い方法はありますか?

2
awidgery

それはアプリケーションのユースケースに依存します。子供向けのアプリであれば、5タップのイースターエッグがすぐに発見されます。しかし、それが言うならば、金融アプリは、だれもが日常的にイースターエッグを発見することはないと合理的に期待しています。

私は個人的にはイースターエッグオプションが好きです。それは、それとは何の関係もないとしても、それを発見したユーザーに発見の要素と驚きを追加するからです。とにかくそこにイースターエッグをいくつか追加することができます。

0
Adnan Khan

ビルドにURLを切り替えるフラグが含まれるようにコードを記述します。ビルドは自分だけにリリースしてください。

1
jkuss

@awidgery個人的には、これはより技術的な質問だと思いますが、私はあなたのためにそれに答えようとします。

アプリがAndroidアプリの場合は、 Gradle を使用してアプリをプロダクションと開発の間で切り替えることができます。確認したいのはビルドタイプです。 。

アプリがiOSアプリの場合、 設定ファイル を使用してこれを実行できるはずです。

あなたのアプリがWindowsアプリであるなら、私はあなたが何ができるかわかりませんが、あなたは上記と同じようなことをできると確信しています。

アプリをアプリ内で本番環境から開発に切り替えることができるようにしたい場合は、開発者が望んでいない場合ではなく、「実際のユーザー」が本番バージョンを使用するのは簡単であるべきだと私は考えません。開発またはテストタスク。 ちょうど私の意見です。

すべてのif'sについて申し訳ありませんが、それが役に立てば幸いです????

0
El Wexicano

Xを介してこれを解決する最小化

このアプリがユーザーに公開される場合、ローカルコンピューターまたはテストマシンを指すコードベースに何かを含めることはお勧めできません。

私はそれをお勧めします:

  • 目に見えないインタラクションシーケンスを追加して(画面の隅を特定の順序でタップするなど)、開発者コンソールを起動します。ここで重要なのはそのコンソールが誤ってまたは悪意を持って発見されても問題ないようにアプリを設計する必要がありますです。
  • コンソールは、資格情報に対して本番サーバーへの呼び出しを発行し、スーパーユーザーであることを確認します。つまり、あなたの電話番号、ログイン認証情報、秘密のAPIキー、Android/iPhone ID、またはあなたが使用している識別認証情報をチェックして、それがあなたであり、別のユーザーではないことを確認します。
  • その場合は、テストAPIの使用を許可するトークンを発行します。そうでない場合、ブルートフォース攻撃を防ぐために、ログに記録して割り当てを割り当てます。
  • 次に、アプリはサーバーへの通常のAPI呼び出しを発行しますが、追加の認証トークンを使用します。
  • サーバーはトークンをチェックし、それが有効な場合は、API呼び出しをローカルまたはテストに転送します。このルーティングはクライアント側ではなくサーバー側で行われるため、ローカルおよびテストマシンのIPアドレスを検出できません。

これは有効なUXだと思いますquestion純粋なUXのアプローチ(例:管理パスコード)を使用して解決できるため。ただし、この場合は、サーバー側のセキュリティと組み合わせた、最小限の検出セーフなUXアプローチの方が優れていると思います。

0
tohster