iOS、Android、UWPのXamarin Formsクロスプラットフォームアプリケーションを使用しています。 Xam.Plugin.Geolocatorを使用して、各デバイスから場所を取得します。 iOSでの私の挑戦は、デバイス上のアプリの最初の起動時です。私のコードが実行され、Plugin.Geolocator.Abstractions.IGeolocatorオブジェクトのIsGeolocationEnabledがfalseになっていることが検出され、アプリケーションがデバイスの場所を使用できるようにするオプションが表示されます。これにより、アプリが位置情報サービスを有効にしていないことをアプリに通知します。XamarinフォームはiOSでGeoLocationの承認を待たずに
基本的に私は、使用する前に以下のコード行を打っていますが、これまでの位置情報サービスについて尋ねている。他のプラットフォームで
if (!App.gobj_RealGeoCoordinator.IsGeolocationEnabled)
ls_ErrorMessage = resourcestrings.GetValue("NoLocationServicesMessage");
を待っている間に、UWPは、少なくとも、アプリが一時停止しているようですユーザが位置情報サービスの使用要求に応答する。 Androidがアプリを使用する場合、Androidは自動的に場所へのアクセスを許可しているようです。
ロケーションサービスを使用するリクエストが最初に実行されたかどうかにかかわらず、iOSでどのように検出されるか考えてみましょうか?どんな提案も大歓迎です。
UPDATE(1): 以下のようにinfo.plistにすべて正しい項目があります。私は最終的に私のアプリが既にIsGeolocationEnabledをチェックして、ユーザーがアプリケーションの位置情報サービスを有効にしていないと判断した直後にその場所の使用を要求します。
UPDATE(2): だから私は、次のコードを使用して少し進歩を遂げました。ユーザー対
try
{
while (!App.gobj_RealGeoCoordinator.IsGeolocationEnabled)
{
await Task.Delay(1000);
}
ViewModelObjects.AppSettings.CanAccessLocation = App.gobj_RealGeoCoordinator.IsGeolocationEnabled;
}
catch (Exception ex)
{
XXXXXXX
}
課題は、プラグインは私に、ユーザに知る方法を提供しないように見えるということであるロケーションサービスダイアログに応答しなかった(すなわちIsGeolocationEnabled == falseが)(ロケーションサービスダイアログにノーと言いましたまた、IsGeolocationEnabled == false)。助言がありますか?
これまで誤って拒否していたことはありますか?設定アプリで、アプリの場所が許可されているかどうかをチェックします。また、適切なinfo.plistエントリを追加しましたか? –
すべての情報、plistの内容は正しいです。私は最終的に位置情報サービスを許可する要求を得る。それは、アプリケーションの最初の実行時にのみ発生します。一度私はアプリケーションの最初の実行で位置情報サービスを許可し、それをシャットダウンし、再起動、すべて正常に動作します。これは、ユーザーがアプリケーションのすべての場所の使用を促すタイミングと、その応答を待つようにアプリケーションが表示されないという事実のタイミングです。 –