2012-05-04 20 views
2

位置情報サービスの許可をリクエストする2つ以上のウェブビューを表示するネイティブiOSアプリケーションがあります。例えば複数のロケーションサービスアラートの回避

、特定のクエリのためのマップの結果を比較するアプリケーションを想像する - 例えば、ユーザーがアドレスを送信、1つのWebViewのは、Googleマップからの結果を示し、ビングから別など

方法はあります混乱したアラートビューで、ロケーションサービスの許可を要求している個々のWebビューのそれぞれを回避するには?

さまざまなロケーションベースのアセットを比較する目的がアプリの唯一の目的ならば、私のアプリケーションではユーザーにを一度問い合わせる必要があります。は、ロケーションサービスを使用してアプリケーションを承認する場合です。どのように私のWebviewsはこの許可内で、または位置サービスアーキテクチャでは不可能ですか?

ロケーションサービスにアクセスするためのアクセス権を集約できない場合は、個々のプロバイダごとにパーミッションを維持する方法がありますか?たとえば、ユーザーは各マップのアクセスをアプリを実行するたびに承認する必要はありません.3つのアラートビュー(アプリと2つのウェブビュー)が表示され、起動するたびに同じことを尋ねます。

Webビューではなく、マッププロバイダーへのネイティブAPI呼び出しを実装するこの動作を回避する唯一の方法はありますか?

すべての入力を歓迎します。

答えて

1

はい、これを行うことができます。このためには、appDelegateクラスを使用します。ロケーションインタラクションコードが単純な場合は、appDelegateでメソッドを作成して承認ステータスを取得し、didFinishLaunchingメソッドから呼び出すだけです。

- (BOOL)setupLocationMgr 
    { 
     CLLocationManager *locationMgr = [[CLLocationManager alloc] init]; 
     locationMgr.purpose = @"Location tracking for XXX app."; 
     return [CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorized; 
    } 

appDelegateが、その後CLLocationManagerオブジェクトを保持し、それを必要とするすべてのビューに戻すことができます。

私のような方法でこのような何かを行います。

+0

ビューに戻すにはどうすればいいですか? – onmyway133

1

埋め込みウェブビューがユーザーの所在地権限を処理する方法は、ウェブサイトに基づいています。ユーザーの所在地を必要とする各Webサイトは、具体的にユーザーに質問する必要があります(そうしないと、悪意のある行為をする可能性があります...)。

私は表示するために別のWebビューを再作成しているため、アプリケーションが開いているときに警告が表示されていると思いますが、キャッシュがクリアされる可能性があります。

+0

キャッシュ?あなたはもっと具体的になりますか? – onmyway133

+0

これは、webviewが所在地許可の質問に対する回答をどれくらいの間覚えているかを意味します。 Webページがユーザーの場所を照会するたびにユーザーに質問するか、Webviewの有効期間中の回答を覚えている可能性があります。私はそれがどのように機能するか完全にはわからない。 – Mark

関連する問題