Covid-19Radar / Covid19Radar

Open Source / i18n / iOS Android Cross Platform Contact Tracing App by exposure notification framework Xamarin App and Server Side Code
https://github.com/Covid-19Radar/Covid19Radar/blob/master/CONTRIBUTING.md
Mozilla Public License 2.0
47 stars 9 forks source link

connection error on submitting to accept the Terms of Use #543

Closed anharu2394 closed 4 years ago

anharu2394 commented 4 years ago
スクリーンショット 2020-06-21 18 42 50

I develop on Mac Book Pro. I built and run Covid19Radar.Android and Covid19Radar.Functions with Visual Studio. But, when submitting to accept the Terms of Use, cause connection error.

Do you have something else to make the app work successfully? Please tell me how to setup development environment and make the app work successfully.

PC: Mac Book Pro Emulator: Pixel 3(Android 10)

anharu2394 commented 4 years ago

related issue: #527

chooyan-eng commented 4 years ago

related issue: #539

anharu2394 commented 4 years ago

現時点でローカルでapiと繋いで開発するステップを教えていただきたいです on mac book pro

laiso commented 4 years ago

自分が調べた結果を共有します(正式な方法ではないかもしれません)

Covid19Radar.Functions.sln をVisual Studio for Mac で開いて Covid19Radar.Api を実行するとhttp://localhost:7071 でWeb APIにアクセスできると思います。

ビルドには.NET Coreが必要です

https://dotnet.microsoft.com/download

内部的にAzure Functions を使うようなのでもしかしたらそのセットアップも必要なのかもしれません(僕の環境ではセットアップ済みなのでわからず) https://docs.microsoft.com/en-us/visualstudio/mac/azure-functions?view=vsmac-2019

このアドレスを Covid19Radar/Covid19Radar/settings.jsonapiUrlBase に設定するとアクセス先を指定することができます。

  "apiUrlBase": "http://localhost:7071/api",

この状態でiOSシミュレーター/Androidエミュレーターを使ってアプリ側の開発ができるかと思います。

同時に起動するにはVisual Studioアプリケーションのインスタンスを新規作成する必要があると思います。

https://docs.microsoft.com/en-us/visualstudio/mac/open-multiple-solutions?view=vsmac-2019

すべての箇所を確認したわけではないのでどこかで別のエラーが出たらすみません。

anharu2394 commented 4 years ago

@laiso さん、丁寧な回答ありがとうございます。 emulatorからの接続なので、

 "apiUrlBase": "http://localhost:7071/api",

では接続できず、

 "apiUrlBase": "http://10.0.2.2:7071/api",

にし、 試して見ました。

そうすると、利用規約ボタンを押すと、 Cleartext HTTP traffic not permittedというエラーが出たので、 AndroidManifest.xmlを

<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
    <uses-permission android:name="android.permission.INTERNET" />
    <application
        ...
        android:networkSecurityConfig="@xml/network_security_config"
        ...>
        ...
    </application>
</manifest>

とすることでこのエラーはなくなりました。

しかし、そうすると、このような画面で固まります。

スクリーンショット 2020-06-21 23 50 33

また、このような例外をキャッチしました

スクリーンショット 2020-06-21 23 51 24
anharu2394 commented 4 years ago

そして、api側ではこのような例外をキャッチしました

スクリーンショット 2020-06-21 23 55 47
chooyan-eng commented 4 years ago

@laiso @anharu2394

私も同じ状況で悩んでいたところ、お二方の投稿でここまで追いつくことができました。ありがとうございます。

私の環境でも同じ事象が発生しております。

少し調べたところ、エラーで出ている accountEndpoint は CosmosDB の接続先設定らしく、 API の方の local.settings.json.example ファイルに以下のように記述されています。

"COSMOS_CONNECTION": "AccountEndpoint=https://localhost:8081/;AccountKey=(以下略)",

おそらく、 CosmosDB に関しても Functions と同様にローカルで動作するよう環境構築が必要なのだと推測しています。

anharu2394 commented 4 years ago

おそらく、CosmosDB emulatorというのをインストールして行えそうですが、macでインストールするのは邪道そうですね。やってみます。 https://docs.microsoft.com/ja-jp/azure/cosmos-db/local-emulator

anharu2394 commented 4 years ago

いや、邪道というのは、結局、Windows仮想マシンにアクセスしてする方法なので、 macやlinuxで環境を構築というのはできなそうです

Mac または Linux 上での実行 現在、Cosmos エミュレーターは Windows でのみ実行できます。 Mac または Linux を実行するユーザーは、Windows 仮想マシンによってホストされる、Parallels や VirtualBox などのハイパーバイザー内でエミュレーターを実行できます。 これを有効にする手順は、次のとおりです https://docs.microsoft.com/ja-jp/azure/cosmos-db/local-emulator#running-on-mac-or-linux  より

chooyan-eng commented 4 years ago

そのようですね。VM に Windows を入れるか、別の Windows PC で CosmosDB のエミュレーターだけ環境構築してローカルIPで接続するか、といったところになるかと思います。一旦後者の方法で試してみようと思っています。

anharu2394 commented 4 years ago

現時点での結論

とりあえず、#553 がマージされれば、このissueを閉じたいと思います。

chooyan-eng commented 4 years ago

なお、Azure Functions プロジェクトでは local.settings.json ファイルを host.json ファイルと同じ並びに置いておくそうなので、おそらくコミットされている local.settings.json.example ファイルをリネームすることで有効になりそうです。

https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-run-local?tabs=macos%2Ccsharp%2Cbash

このあたりも CosmosDB のエミュレーターが準備できたら試してみます。

chooyan-eng commented 4 years ago

553 がマージされれば、サーバーを立てずにフロントエンド はおおよそ開発できるのでこの方法が最善なのではないか

おお、もうプルリク出ていたのですね。これはその通りと思います。 この issue はバックエンドも含めて環境構築したい方の参考になるかと思います。

chooyan-eng commented 4 years ago

いろいろ試しまして、

とすることでアプリのホーム画面まで遷移できました。

ただし、最後の IConfigurationExtension.cs の内容を書き換えたのは local.settings.json ファイルが読み込まれていなかった問題の苦肉の策のため、正しく読み込ませる方法は別途試してみます。ファイル名や置く場所が違うだけだと推測しています。

anharu2394 commented 4 years ago

結論

539 (アプリ通信のmock化)をして開発する。