1

ユーザーがアプリで位置情報サービスを使用する要求を受け入れたかどうかを検出しています。この受け入れに依存するトグル スイッチが UI にあります。最初にスイッチを切り替える (オンにする) と、位置情報を使用する要求がトリガーされます。そのアラートで彼らがどのボタンを押したか知りたいです。(受け入れるか拒否するか)今は、それをオフにして、ユーザーにもう一度押してもらうだけです(その後、選択したオプションを検出します)。

それはちょっとずさんなので、この特定のアラートを検出する方法があるかどうか、またはアプリケーションではなくOSによってトリガーされるため、それを実行できないかどうかを知りたいですか? 私はまだ試していませんが、UIAlertView一般的なボタンを押すだけでデリゲート メソッドを使用できると考えていましたが、より具体的なものを期待していました。

アップデート

ロケーションリクエストをトリガーしたときに通知を登録するだけで、これを機能させることができました(および認証プロンプトが表示されます)。アプリケーションは非アクティブ状態になります (通知バーをプルダウンするのと同じように)。アプリケーションがアクティブになったときに通知をトリガーするだけで、そこで承認ステータスを照会して UI を更新することができます。その場で承認ステータスを処理したい場合、これが他の誰かに役立つことを願っています.

4

2 に答える 2

5

アラートを傍受する方法はありません。ただし、 didChangeAuthorizationStatusというメソッド上のCLLocationManagerDelegateメソッドがあります。おそらく、これがアラートの傍受に最も近い方法です。

于 2012-11-12T17:54:19.760 に答える
0

あなたが言ったように、このアラートはOSから来るので、ユーザーがどのボタンを選択したかを明示的に知る方法はありません。ただし、アプリで位置情報サービスが有効になっているかどうかを確認し、その方法を知ることができます. 次のような方法を使用します。

-(BOOL)locationServicesIsEnabled
{
    if (![CLLocationManager locationServicesEnabled] || ![CLLocationManager     authorizationStatus])
    return NO;
return YES;
}
于 2012-11-12T17:31:25.907 に答える