Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/nkalupahana/capacitor-cloudkit

Basic CloudKit web authentication plugin for getting ckWebAuthToken on all platforms.
https://github.com/nkalupahana/capacitor-cloudkit

capacitor typescript

Last synced: 2 months ago
JSON representation

Basic CloudKit web authentication plugin for getting ckWebAuthToken on all platforms.

Awesome Lists containing this project

README

        

# capacitor-cloudkit

Basic CloudKit authentication plugin. v1 is Capacitor 4, v2 is Capacitor 5, v3 is Capacitor 6.

## Install

```bash
npm install capacitor-cloudkit
npx cap sync
```

## Setup

Each different platform requires a different `ckAPIToken`.
- Web: Token configured for `postMessage`.
- iOS: Token configured to redirect to your container's URL scheme. It'll show up on the CloudKit dashboard in a dropdown when you create an API key. Mine is `cloudkit-icloud.baseline.getbaseline.app://`, so I'll be using that as an example. I set mine to `cloudkit-icloud.baseline.getbaseline.app://callback`.
- Android: Token configured to redirect to `https://example.com` or some similar existant but blank domain.

## Setup (iOS)

- Add your callback URL as a URL scheme in your app, in the Info tab. (e.g. `cloudkit-icloud.baseline.getbaseline.app`)
- Add the following to the beginning of `func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool` in `AppDelegate`:

```swift
if (url.scheme == "PUT CALLBACK URL SCHEME HERE (e.g. cloudkit-icloud.baseline.getbaseline.app)") {
NotificationCenter.default.post(name: NSNotification.Name("cloudkitLogin"), object: url);
}
```

## API

* [`authenticate(...)`](#authenticate)
* [`fetchRecord(...)`](#fetchrecord)
* [Interfaces](#interfaces)

### authenticate(...)

```typescript
authenticate(options: SignInOptions) => Promise<{ ckWebAuthToken: string; }>
```

| Param | Type |
| ------------- | ------------------------------------------------------- |
| **`options`** | SignInOptions |

**Returns:** Promise<{ ckWebAuthToken: string; }>

--------------------

### fetchRecord(...)

```typescript
fetchRecord(options: FetchRecordOptions) => Promise
```

Only available on iOS.

| Param | Type |
| ------------- | ----------------------------------------------------------------- |
| **`options`** | FetchRecordOptions |

**Returns:** Promise<any>

--------------------

### Interfaces

#### SignInOptions

| Prop | Type |
| ------------------------- | ------------------------------------------ |
| **`containerIdentifier`** | string |
| **`environment`** | 'development' \| 'production' |
| **`ckAPIToken`** | string |

#### FetchRecordOptions

| Prop | Type |
| ------------------------- | ---------------------------------------------- |
| **`containerIdentifier`** | string |
| **`database`** | 'private' \| 'public' \| 'shared' |
| **`by`** | 'recordName' |
| **`recordName`** | string |