iOS 9でカレンダーアクセスを要求して異常なケースに遭遇しました。このロジックはすべてのiOS 10デバイスで正常に動作します。EKEventStore requestAccess()がiOS 9でユーザーのプロンプトを表示していません
ここでは、ユーザーがカレンダーにイベントを追加するためにタップするボタンをツールバーに追加しました。
したがって、ユーザーが「カレンダーに追加」ボタンを初めてタップするまでは、カレンダーにアクセスするためのアクセス許可を確認しません。このように:
@IBAction func addToCalendarPressed(_ sender: UIBarButtonItem) {
eventStore.requestAccess(to: .event, completion: { (granted, error) in
if (granted) && (error == nil) {
// Present the EKEventEditViewController
} else {
// Do something else (show an alert)
}
})
}
iOS 10では、アプリは予想どおりのカレンダーアクセスのプロンプトを表示します。 iOS 9.xでは、プロンプトが表示されず、補完ハンドラが即座に起動し、許可がfalseを返します。
「カレンダーの権限」チェックが完了したように見えても、設定に入り、カレンダーのアクセスを手動で有効にすることはできません。デバイスに関する限り、アプリは決して許可チェックを行っていないので、設定>プライバシー>カレンダーには表示されません。
ユーザーがボタンをタップするのを待つ代わりに、チェックをviewWillAppearまたはviewDidLoadに移動しようとしましたが、それでも機能しません。イベントチェックでいくつかのサンプルアプリケーションを引き出し、iOS 9で動作します。このインスタンスでプロンプトが失敗する理由を理解できませんでした。
アプリは、(ただし、この画面上の)場所をチェックし、それらの作業を正しくiOSの9