npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@code_is_working/react-native-wears

v1.0.0

Published

A React Native module with a common interface for interacting with wearables on iOS and Android.

Downloads

3

Readme

React Native Wearables

A React Native module with a common interface for interacting with wearables on iOS and Android.

Getting started

  • Browse to your react-native app. (see Demo for a ready made example)

  • Install react-native-wearables. npm install react-native-wearables

  • Install the peer dependencies. npm install rn-apple-healthkit react-native-google-fitness

  • Link the native modules. react-native link

  • Edit android/app/src/main/java/.../MainApplication.java. The line that looks like new GoogleFitPackage() should be changed to new GoogleFitPackage(BuildConfig.APPLICATION_ID). (this is a temporary fix to a known react-native limitation)

  • Add the following lines to ios//Info.plist – these are what iOS shows your users when requesting access to HealthKit data.

<key>NSHealthShareUsageDescription</key>
<string>Read and understand health data.</string>
<key>NSHealthUpdateUsageDescription</key>
<string>Share workout data with other apps.</string>
  • Enable HealthKit in your iOS app's Capabilities in Xcode.

Xcode Capabilities HealthKit

Demo app

Go to yldio/react-native-wearables-demo to check out a super simple demo app that runs on both iOS and Android.

Data

Data is a common interface to the health and fitness data system repositories on iOS and Android, respectively HealthKit and Google Fitness.

It lets you write code like this which works on both iOS and Android.

import { Data } from "react-native-wearables";

Data.authorize([Data.Types.heartRateBpm])
  .then(() =>
    Data.read(Data.Types.heartRateBpm, {
      startDate: new Date("2018-05-01"),
      endDate: new Date("2018-05-09")
    })
  )
  .then(samples => console.log(samples))
  .catch(error => console.error(error));

Motivation

This project builds on the great work of existing iOS- and Android-specific React Native modules to access wearables data on each platform. It abstracts the platform differences into a common interface that makes it easy to create great cross-platform experiences with wearables data.

API Documentation

Data.Types

An object of constants representing each of the data types supported by the module.

  • Data.Types.heartRateBpm, heart rate samples, unit is BPM (beats per minute)

Data.authorize(dataTypes)

Launches the OS-specific dialog to request permission from the user to read / write the data types requested.

Example
import { Data } from "react-native-wearables";

Data.authorize([Data.Types.heartRateBpm])
  .then(() => console.log("permission granted"))
  .catch(() => console.log("permission not granted"));
Arguments
  • dataTypes, an array of data types constants, found in Data.Types.
Returns

A promise which resolves when and if the user granted the requested permission to your app and rejects if the user cancelled or didn’t grant permission.

Data.read(dataType, options)

Retrieves data samples from HealthKit on iOS and Google Fitness on Android. Will fail if called before Data.authorize has been called with success.

Example
import { Data } from "react-native-wearables";

Data.read(Data.Types.heartRateBpm, {
  startDate: new Date("2018-05-01"),
  endDate: new Date("2018-05-09")
})
  .then(samples => console.log(samples))
  .catch(() => console.log("failed"));
Arguments
  • dataType, a data type, found in Data.Types
  • options, an object of options - startDate, a Date instance - endDate, a Date instance
Returns

An array of data points, where

  • value is a number
  • startDate is a Date ISO string
  • endDate is a Date ISO string
[
	{
		value: 80,
		startDate: "2018-06-06T13:59:47.375+0100",
		endDate: "2018-06-06T13:59:47.375+0100",
	},
	...
]