Langsung ke konten

Panduan Memulai

GitHub

Anda bisa menggunakan AI-Assisted Setup kami untuk menginstal plugin ini. Tambahkan skill Capgo ke tool AI Anda dengan command berikut:

Jendela terminal
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-plugins

Lalu gunakan prompt berikut:

Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-calendar` plugin in my project.

Jika Anda lebih memilih Manual Setup, instal plugin dengan menjalankan perintah berikut dan ikuti petunjuk khusus platform di bawah ini:

Jendela terminal
bun add @capgo/capacitor-calendar
bunx cap sync
import { CapacitorCalendar } from '@capgo/capacitor-calendar';
await CapacitorCalendar.requestFullCalendarAccess();
await CapacitorCalendar.createEvent({
title: 'Site visit',
startDate: Date.now(),
endDate: Date.now() + 60 * 60 * 1000,
location: 'Warehouse 4',
});
await CapacitorCalendar.createEventWithPrompt({
title: 'Team sync',
startDate: Date.now() + 86400000,
endDate: Date.now() + 90000000,
});
  • Level akses iOS: pilih helper read only, write only, atau full access yang sesuai fitur Anda, jangan meminta akses berlebih.
  • Reminders hanya untuk iOS: lindungi API Reminders saat Capacitor.getPlatform() === 'ios'.
  • Zona waktu: kirim offset eksplisit atau milidetik UTC yang konsisten dengan backend Anda.

Tambahkan deskripsi penggunaan yang diperlukan aplikasi Anda ke ios/App/App/Info.plist:

<key>NSCalendarsUsageDescription</key>
<string>This app needs calendar access.</string>
<key>NSCalendarsWriteOnlyAccessUsageDescription</key>
<string>This app needs permission to add calendar events.</string>
<key>NSCalendarsFullAccessUsageDescription</key>
<string>This app needs permission to read and manage calendar events.</string>
<key>NSRemindersUsageDescription</key>
<string>This app needs reminders access.</string>
<key>NSRemindersFullAccessUsageDescription</key>
<string>This app needs permission to read and manage reminders.</string>

iOS 17 ke atas membedakan antara akses kalender write-only dan akses penuh. Sertakan deskripsi penggunaan reminder hanya jika aplikasi Anda memanggil Reminders APIs.

Referensi Apple: Migrasi ke level akses Calendar terbaru.

Tambahkan izin kalender yang dibutuhkan aplikasi Anda ke android/app/src/main/AndroidManifest.xml:

<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />

Referensi Android: Izin pengguna Calendar Provider.

import { CapacitorCalendar } from '@capgo/capacitor-calendar';
const permission = await CapacitorCalendar.requestFullCalendarAccess();
if (permission.result !== 'granted') {
throw new Error('Calendar permission was not granted');
}

Untuk aplikasi yang hanya menambah event, gunakan requestWriteOnlyCalendarAccess(). Untuk alur baca khusus Android, gunakan requestReadOnlyCalendarAccess().

Tanggal menggunakan Unix timestamp dalam milidetik.

import { CapacitorCalendar } from '@capgo/capacitor-calendar';
const startDate = Date.now() + 60 * 60 * 1000;
const endDate = startDate + 60 * 60 * 1000;
const { id } = await CapacitorCalendar.createEvent({
title: 'Product review',
location: 'Capgo',
startDate,
endDate,
description: 'Created with @capgo/capacitor-calendar',
});
console.log('Created event', id);
await CapacitorCalendar.createEventWithPrompt({
title: 'Planning session',
location: 'Office',
startDate: Date.now() + 24 * 60 * 60 * 1000,
endDate: Date.now() + 25 * 60 * 60 * 1000,
});

Di Android, pemanggilan create dan modify berbasis prompt mengembalikan null. List event setelahnya jika Anda perlu mencari ID event yang dibuat.

const now = Date.now();
const oneWeekFromNow = now + 7 * 24 * 60 * 60 * 1000;
const { result: events } = await CapacitorCalendar.listEventsInRange({
from: now,
to: oneWeekFromNow,
});
const { result: calendars } = await CapacitorCalendar.listCalendars();
const { result: defaultCalendar } = await CapacitorCalendar.getDefaultCalendar();
const calendarId = defaultCalendar?.id ?? calendars[0]?.id;

selectCalendarsWithPrompt() tersedia di iOS saat Anda ingin menampilkan picker kalender sistem.

const permission = await CapacitorCalendar.requestFullRemindersAccess();
if (permission.result === 'granted') {
await CapacitorCalendar.createReminder({
title: 'Send launch notes',
dueDate: Date.now() + 2 * 24 * 60 * 60 * 1000,
notes: 'Created with @capgo/capacitor-calendar',
});
}

Reminder API hanya tersedia di iOS.

Repositori ini menyertakan example app Capacitor dengan pengecekan izin, pembuatan event, prompt event native, listing kalender, dan listing rentang event.

iOSAndroid
Demo iOS pembuatan event kalender nativeDemo pembuatan event kalender native di Android

Referensi lengkap API tersedia di README package dan definisi TypeScript: