WWDC21) Location Button
個人情報の保護はアップル製品の核心機能の一つである.また,ユーザが個人情報を心配するのは驚くべきことではない.
開発者として,不適切なタイミングや不明確なコンテキストでユーザに機密データの提供を要求することはよくない.
iOS 15では、アップルがユーザーに位置決めを要求する新しい位置決めボタンを紹介した.
既存のサービスでは、アップルが新しいユーザーインタフェースを導入した問題は何ですか?
The Problems
地図を生成します. locationボタンを生成します. ボタンを押すと、ユーザの位置情報が受信され、地図に接続されて表示される. この3つのステップで例を完了できます.
まず
ロケーション情報は、Location ButtonのUIを使用して受信する必要があります.
delegateを宣言して位置情報管理部を担当し、locationボタンの構成を指定してボタンを作成し、ボタンがマークされたときにユーザーの位置を受信するコードを記述します.
参考資料
A better way to ask for a one-time user's location with the Location Button
開発者として,不適切なタイミングや不明確なコンテキストでユーザに機密データの提供を要求することはよくない.
iOS 15では、アップルがユーザーに位置決めを要求する新しい位置決めボタンを紹介した.
既存のサービスでは、アップルが新しいユーザーインタフェースを導入した問題は何ですか?
The Problems
location buttonはone-timeユーザーの場所をよりよく提供します.ユーザーの位置を尋ねるのはアプリケーションの核心機能ではありませんが、現在のユーザーの位置、近隣の店の表示、メールアプリを通じて友人に現在の位置を送信するなどの付加機能を提供するアプリケーションに適しています.
しかしながら、現在実施されている次の分野では、従来の方法で使い捨て位置を要求することは問題である.
One-Shot
一般に、位置情報を要求するライセンスは、どのような形式を採用しても、ユーザがそれを受け入れる/拒否する機会にすぎない.
ユーザーが「許可しない」をクリックすると、後でユーザーの場所を要求することはできません.再度許可できる方法は、設定に入り、個別に指定することです.
この場合、ユーザーは、上記の許可された場所のポップアップメッセージを1回表示するだけで、アプリケーションが削除されても変更しにくくなります.
Allow Once
位置を許可するオプションでは、AllowOnceは一時的で最小限の制約条件のように見えますが、実際には最悪のオプションです.このオプションを選択すると、次回ユーザーの場所を要求すると、[権限の要求]ダイアログボックスが再度表示されます.
画面表示後にユーザ位置を入力すると、単一の位置が必要になるたびに画像処理が必要となり、ユーザは最終的に不便を感じる.
iOS 13では、アップルが「1回許可」オプションを提供しています.「許可」という言葉が含まれていますが、実際には後で決定した選択肢と区別されず、使い捨てユーザーの場所を要求することはできません.
Location Button
これらの問題を解決するために、使い捨てユーザの位置を尋ねる新しい方法が必要である.
Key Difference
location buttonの設計方法は,サービスを利用する長期ユーザに位置を与えることである.そのため、使い捨てユーザーの位置を尋ねるのはカジュアルで、想像以上に制限が多い.
New Dialog
ユーザーはlocationボタンをクリックすると、上の新しい画面が表示されます.ユーザーの場所を許可する2つのオプションが用意されています.
No need to put privacy description
When you share your location with this app, a blue location indicator will appear in the status bar.
アップル社は、 Info.plist
からNSLocationWhenInUseUsageDescription
に設定する必要はありません.
You can ask it again and again
オプションでご覧のように、ユーザーに位置情報の使用を許可するかどうかを尋ねる必要はありません.このサービスを後で使用すると、同じポップアップウィンドウも表示されるので、再設定できます.
Conclusion
以下に整理できます.
Location Buttonは、アプリケーションの場所へのアクセス権を付与できるインタフェースです.
既存の方法では、位置情報を取得するには完全な位置権限が必要ですが、Location Buttonを使用すると、位置権限が必要なときに簡単に位置権限を要求できます.
SWIFTUIはLocationButtonを提供し、UIKEtはCoreLocationButtonを提供し、CoreLocationUIフレームワークに含まれる.
Example Code
従来の方法では、上記のコードに示すように、位置情報を呼び出すためにrequestWhenInUseAuthorization()
を記述すべきである.
ただし、このコードをCLLocationButtonを使用するように変更した場合は、次のように変更できます.
位置情報、フレームワークの指定、アイコン、ラベルなどの属性を使用して、UIを別途要求する必要はありません.
ロケーション情報が重要なサービスである場合、ロケーション権限が拒否されると大きなリスクに直面する可能性があります.LocationButtonを使えば、開発者の立場からすれば、位置権限を拒否されることが少なくなるので良いのですが、ユーザーの立場からすれば、位置情報が必要な瞬間さえあれば、位置情報の提供を要求されることになります.
Tutorial
MapKitとともに使用し、Locationボタンをクリックしたときに位置情報を許可する場合は、地図を自分の位置に表示する例を作成します.
これらの問題を解決するために、使い捨てユーザの位置を尋ねる新しい方法が必要である.
Key Difference
location buttonの設計方法は,サービスを利用する長期ユーザに位置を与えることである.そのため、使い捨てユーザーの位置を尋ねるのはカジュアルで、想像以上に制限が多い.
New Dialog
ユーザーはlocationボタンをクリックすると、上の新しい画面が表示されます.ユーザーの場所を許可する2つのオプションが用意されています.
No need to put privacy description
When you share your location with this app, a blue location indicator will appear in the status bar.
アップル社は、 Info.plist
からNSLocationWhenInUseUsageDescription
に設定する必要はありません.
You can ask it again and again
オプションでご覧のように、ユーザーに位置情報の使用を許可するかどうかを尋ねる必要はありません.このサービスを後で使用すると、同じポップアップウィンドウも表示されるので、再設定できます.
Conclusion
以下に整理できます.
Location Buttonは、アプリケーションの場所へのアクセス権を付与できるインタフェースです.
既存の方法では、位置情報を取得するには完全な位置権限が必要ですが、Location Buttonを使用すると、位置権限が必要なときに簡単に位置権限を要求できます.
SWIFTUIはLocationButtonを提供し、UIKEtはCoreLocationButtonを提供し、CoreLocationUIフレームワークに含まれる.
Example Code
従来の方法では、上記のコードに示すように、位置情報を呼び出すためにrequestWhenInUseAuthorization()
を記述すべきである.
ただし、このコードをCLLocationButtonを使用するように変更した場合は、次のように変更できます.
位置情報、フレームワークの指定、アイコン、ラベルなどの属性を使用して、UIを別途要求する必要はありません.
ロケーション情報が重要なサービスである場合、ロケーション権限が拒否されると大きなリスクに直面する可能性があります.LocationButtonを使えば、開発者の立場からすれば、位置権限を拒否されることが少なくなるので良いのですが、ユーザーの立場からすれば、位置情報が必要な瞬間さえあれば、位置情報の提供を要求されることになります.
Tutorial
MapKitとともに使用し、Locationボタンをクリックしたときに位置情報を許可する場合は、地図を自分の位置に表示する例を作成します.
以下に整理できます.
Location Buttonは、アプリケーションの場所へのアクセス権を付与できるインタフェースです.
既存の方法では、位置情報を取得するには完全な位置権限が必要ですが、Location Buttonを使用すると、位置権限が必要なときに簡単に位置権限を要求できます.
SWIFTUIはLocationButtonを提供し、UIKEtはCoreLocationButtonを提供し、CoreLocationUIフレームワークに含まれる.
Example Code
従来の方法では、上記のコードに示すように、位置情報を呼び出すためにrequestWhenInUseAuthorization()
を記述すべきである.
ただし、このコードをCLLocationButtonを使用するように変更した場合は、次のように変更できます.
位置情報、フレームワークの指定、アイコン、ラベルなどの属性を使用して、UIを別途要求する必要はありません.
ロケーション情報が重要なサービスである場合、ロケーション権限が拒否されると大きなリスクに直面する可能性があります.LocationButtonを使えば、開発者の立場からすれば、位置権限を拒否されることが少なくなるので良いのですが、ユーザーの立場からすれば、位置情報が必要な瞬間さえあれば、位置情報の提供を要求されることになります.
Tutorial
MapKitとともに使用し、Locationボタンをクリックしたときに位置情報を許可する場合は、地図を自分の位置に表示する例を作成します.
MapKit
まず
import MapKit
をします.view.addSubview(mapView)
mapView.frame = CGRect(x: 20, y: 50, width: view.frame.width.self-40, height: view.frame.height.self-220)
viewDidLoad()で作成し、ビューに上図します.Location Button
ロケーション情報は、Location ButtonのUIを使用して受信する必要があります.
import CoreLocationUI
import CoreLocation
作成します.override func viewDidLoad() {
super.viewDidLoad()
...
manager.delegate = self
createButton()
}
private func createButton() {
let button = CLLocationButton(frame: CGRect(x: 0, y: 0, width: 200, height: 50))
button.label = .currentLocation
button.icon = .arrowOutline
button.cornerRadius = 12
button.center = CGPoint(x: view.center.x, y: view.frame.height-70)
button.addTarget(self, action: #selector(didTapButton), for: .touchUpInside)
view.addSubview(button)
}
@objc
func didTapButton() {
manager.startUpdatingLocation()
}
Location Button -> MapKit
delegateを宣言して位置情報管理部を担当し、locationボタンの構成を指定してボタンを作成し、ボタンがマークされたときにユーザーの位置を受信するコードを記述します.
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
guard let location = locations.first else { return }
self.manager.stopUpdatingLocation()
mapView.setRegion(MKCoordinateRegion(center: location.coordinate, span: MKCoordinateSpan(latitudeDelta: 0.1, longitudeDelta: 0.1)), animated: true)
}
また、位置情報の更新が完了した場合、この情報を以前にビューにアップロードした地図に関連付けて、地図に表示することができます.参考資料
A better way to ask for a one-time user's location with the Location Button
Reference
この問題について(WWDC21) Location Button), 我々は、より多くの情報をここで見つけました https://velog.io/@pcsoyeon/wwdc21-Location-Buttonテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol