[解決済み] iPhoneカレンダーにプログラムによるカスタムイベントを追加する
2022-04-17 06:19:43
質問
カスタムアプリからiPhoneのカレンダーにiCalのイベントを追加する方法はありますか?
解決方法を教えてください。
ベースは Appleドキュメント iOS 6.0から少し変更されました。
1) ユーザーのカレンダーへのアクセスを "requestAccessToEntityType:completion:" で要求し、ブロック内でイベント処理を実行します。
2) イベントをコミットするか、save/remove の呼び出しに "commit" パラメータを渡す必要があります。
他はすべてそのままで・・・。
EventKitフレームワークを追加し
#import <EventKit/EventKit.h>
をあなたのコードに追加してください。
この例では、NSString *savedEventId インスタンスプロパティを持っています。
イベントを追加するには
EKEventStore *store = [EKEventStore new];
[store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
if (!granted) { return; }
EKEvent *event = [EKEvent eventWithEventStore:store];
event.title = @"Event Title";
event.startDate = [NSDate date]; //today
event.endDate = [event.startDate dateByAddingTimeInterval:60*60]; //set 1 hour meeting
event.calendar = [store defaultCalendarForNewEvents];
NSError *err = nil;
[store saveEvent:event span:EKSpanThisEvent commit:YES error:&err];
self.savedEventId = event.eventIdentifier; //save the event id if you want to access this later
}];
イベントを削除します。
EKEventStore* store = [EKEventStore new];
[store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
if (!granted) { return; }
EKEvent* eventToRemove = [store eventWithIdentifier:self.savedEventId];
if (eventToRemove) {
NSError* error = nil;
[store removeEvent:eventToRemove span:EKSpanThisEvent commit:YES error:&error];
}
}];
複数のカレンダーを持っている場合は、どれがデフォルトのカレンダーかを確認する必要があります。
Swiftバージョン
EventKitフレームワークをインポートする必要があります
import EventKit
イベント追加
let store = EKEventStore()
store.requestAccessToEntityType(.Event) {(granted, error) in
if !granted { return }
var event = EKEvent(eventStore: store)
event.title = "Event Title"
event.startDate = NSDate() //today
event.endDate = event.startDate.dateByAddingTimeInterval(60*60) //1 hour long meeting
event.calendar = store.defaultCalendarForNewEvents
do {
try store.saveEvent(event, span: .ThisEvent, commit: true)
self.savedEventId = event.eventIdentifier //save event id to access this particular event later
} catch {
// Display error to user
}
}
イベントの削除
let store = EKEventStore()
store.requestAccessToEntityType(EKEntityTypeEvent) {(granted, error) in
if !granted { return }
let eventToRemove = store.eventWithIdentifier(self.savedEventId)
if eventToRemove != nil {
do {
try store.removeEvent(eventToRemove, span: .ThisEvent, commit: true)
} catch {
// Display error to user
}
}
}
関連
-
[解決済み] Xcodeエラー "Could not find Developer Disk Image" が発生する。
-
XCode のコンパイル例外を解決する clang: error: linker command failed with exit code 1
-
[解決済み] App Storeのアプリと連動させる方法
-
[解決済み] 奇妙な不要なXcodeログを隠す
-
[解決済み] UILabelで複数行のテキストを表示する
-
[解決済み] Swiftのプロトコルでオプションのメソッドを定義するには?
-
[解決済み】iOSアプリの名前を変更する方法は?
-
[解決済み】Xcodeのプロセス起動に失敗しました。セキュリティ
-
[解決済み】デバイスがiPhone Xであるかどうかを検出します。
-
[解決済み] Androidでカレンダーのイベントを追加する方法を教えてください。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[エラー処理】iOSのエラー、アーキテクチャx86_64の未定義シンボルについて
-
[解決済み] Xcode 4で「既存のフレームワークを追加」する方法は?
-
[解決済み] Xcode 6のバグ:Interface Builderファイル内の不明なクラス
-
[解決済み] Objective-CでNSNotificationCenterを通してメッセージを送受信する?
-
[解決済み] UITextFieldのテキスト変更イベント
-
[解決済み] iOS Simulatorでネットワークを無効にすることは可能ですか?
-
[解決済み] iOSシミュレータでスクリーンショットを撮る
-
[解決済み] UIViewの左上と右上だけにcornerRadiusを設定する方法は?
-
[解決済み] 「GCC使用時に「Xcode/iOSのライセンスに同意するには管理者権限が必要です。rootでsudoを使用して再実行してください。
-
[解決済み] iphoneアプリのベータテストはどのように行うのですか?