:heart: Capacitor plugin to retrieve data from HealthKit :heart:
Disclaimer : for now only some of the HK data base, in the future the retrieve base will be bigger !
You can simply put this into the info.plist
file
<key>NSHealthShareUsageDescription</key>
<string>Read Health Data</string>
<key>NSHealthUpdateUsageDescription</key>
<string>Read Health Data</string>
Do
npm i --save @perfood/capacitor-healthkit
Then
npx cap update
And if you use Ionic or Angular, here a example setup:
in your .ts file add this:
import {
ActivityData,
CapacitorHealthkit,
OtherData,
QueryOutput,
SampleNames,
SleepData,
} from '@perfood/capacitor-healthkit';
const READ_PERMISSIONS = ['calories', 'stairs', 'activity', 'steps', 'distance', 'duration', 'weight'];
and then you can create async functions like this:
public async requestAuthorization(): Promise<void> {
try {
await CapacitorHealthkit.requestAuthorization({
all: [''],
read: READ_PERMISSIONS,
write: [''],
});
} catch (error) {
console.error('[HealthKitService] Error getting Authorization:', error);
}
}
private async getActivityData(
startDate: Date,
endDate: Date = new Date(),
): Promise<QueryOutput<ActivityData>> | undefined {
try {
const queryOptions = {
sampleName: SampleNames.WORKOUT_TYPE,
startDate: startDate.toISOString(),
endDate: endDate.toISOString(),
limit: 0,
};
return await CapacitorHealthkit.queryHKitSampleType<ActivityData>(queryOptions);
} catch (error) {
console.error(error);
return undefined;
}
}
so you can use the plugin for example with the call CapacitorHealthkit.queryHKitSampleType(...
And you're all set ! :+1:
AuthorizationQueryOptions
| These define which access we need. Possible Options include ['calories', 'stairs', 'activity', 'steps', 'distance', 'duration', 'weight']. |
--------------------
### queryHKitSampleType(...)
```typescript
queryHKitSampleTypeSingleQueryOptions
| defines the type of data and the timeframe which shall be queried, a limit can be set to reduce the number of results. |
**Returns:** Promise<QueryOutput<T>>
--------------------
### isAvailable()
```typescript
isAvailable() => PromiseMultipleQueryOptions
| defines the sample types which can be queried for |
**Returns:** Promise<any>
--------------------
### isEditionAuthorized(...)
```typescript
isEditionAuthorized(queryOptions: EditionQuery) => PromiseEditionQuery
| defines the sampletype for which you need to check for writing permission. |
--------------------
### multipleIsEditionAuthorized()
```typescript
multipleIsEditionAuthorized() => Promisestring[]
|
| **`write`** | string[]
|
| **`all`** | string[]
|
#### QueryOutput
This interface is used for any results coming from HealthKit. It always has a count and the actual results.
| Prop | Type |
| ----------------- | ------------------- |
| **`countReturn`** | number
|
| **`resultData`** | T[]
|
#### SingleQueryOptions
This extends the Basequeryoptions for a single sample type.
| Prop | Type |
| ---------------- | ------------------- |
| **`sampleName`** | string
|
#### MultipleQueryOptions
This extends the Basequeryoptions for a multiple sample types.
| Prop | Type |
| ----------------- | --------------------- |
| **`sampleNames`** | string[]
|
#### EditionQuery
This is used for checking writing permissions.
| Prop | Type |
| ---------------- | ------------------- |
| **`sampleName`** | string
|
This project is licensed under the MIT License