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

react-native-location-enabler

v4.1.1

Published

This package makes it easy for an React Native App to ensure that the android device's system settings are properly configured for the app's location needs. If your app needs to request location, the device needs to enable the appropriate system s

Downloads

3,118

Readme

react-native-location-enabler

GitHub version npm version Last Release Pull Request GitHub issues PRs Welcome

Platform - Android styled with Prettier semantic-release GitHub license

This package makes it easy for an React Native App to ensure that the Android device's system settings are properly configured for the app's location needs. If your app needs to request location, the device needs to enable the appropriate system settings, such as GPS or Wi-Fi scanning. Rather than directly enabling services such as the device's GPS, your app specifies the required level of accuracy/power consumption, and the device automatically makes the appropriate changes to system settings.


Installation

yarn add react-native-location-enabler

Usage

Example using Hook (React Hooks API) :

import LocationEnabler from 'react-native-location-enabler';

const {
  PRIORITIES: { HIGH_ACCURACY },
  useLocationSettings,
} = LocationEnabler;

// React Component
const App = () => {
  const [enabled, requestResolution] = useLocationSettings(
    {
      priority: HIGH_ACCURACY, // default BALANCED_POWER_ACCURACY
      alwaysShow: true, // default false
      needBle: true, // default false
    },
    false /* optional: default undefined */
  );

  return (
    <View>
      {!enabled && (
        <Button
          onPress={requestResolution}
          title="Request Resolution Location Settings"
        />
      )}
    </View>
  );
};

Example using Listener :

import LocationEnabler from "react-native-location-enabler"

const {
  PRIORITIES: { HIGH_ACCURACY },
  addListener,
  checkSettings,
  requestResolutionSettings
} = LocationEnabler

// Adds a listener to be invoked when location settings checked using
// [checkSettings] or changed using [requestResolutionSettings]
const listener = addListener(({ locationEnabled }) =>
  console.log(`Location are ${ locationEnabled ? 'enabled' : 'disabled' }`);
);

// Define configuration
const config = {
  priority: HIGH_ACCURACY, // default BALANCED_POWER_ACCURACY
  alwaysShow: true, // default false
  needBle: false, // default false
};

// Check if location is enabled or not
checkSettings(config);

// If location is disabled, prompt the user to turn on device location
requestResolutionSettings(config);

// ...
// Removes this subscription
listener.remove();

Example React Native App :

Clone the repo

git clone https://github.com/YsnKsy/react-native-location-enabler.git && cd react-native-location-enabler

Install npm dependencies

yarn

Start Metro ( javascript bundler )

yarn example start

Install and launch example app on the device

yarn example android

API

Properties

PRIORITIES

import LocationEnabler from 'react-native-location-enabler';

const { HIGH_ACCURACY, BALANCED_POWER_ACCURACY, LOW_POWER, NO_POWER } =
  LocationEnabler.PRIORITIES;

Static object contain a list quality of service for location updates. If your application wants high accuracy location it should set prioprity to 'HIGH_ACCURACY'. If you want negligible power impact, but to still receive location updates when available, then set priority to 'NO_POWER'.


Methods

useLocationSettings({ priority, alwaysShow, needBle }, initialStatus?)

import LocationEnabler from 'react-native-location-enabler';

const {
  useLocationSettings,
  PRIORITIES: { HIGH_ACCURACY },
} = LocationEnabler;

const [enabled, requestResolution] = useLocationSettings({
  priority: HIGH_ACCURACY, // optional: default BALANCED_POWER_ACCURACY
  alwaysShow: true, // optional: default false
  needBle: true, // optional: default false
});

console.log(`Location are ${enabled ? 'enabled' : 'disabled'}`);

// ...
if (!enabled) {
  requestResolution();
}

Hook let you check the user's device location status 'on' / 'off' and method let you display an activity where they can turn location 'on'.


checkSettings({ priority, alwaysShow, needBle })

import LocationEnabler from 'react-native-location-enabler';

const {
  checkSettings,
  PRIORITIES: { HIGH_ACCURACY },
} = LocationEnabler;

checkSettings({
  priority: HIGH_ACCURACY, // optional: default BALANCED_POWER_ACCURACY
  alwaysShow: true, // optional: default false
  needBle: true, // optional: default false
});

Checking if the user's device location is turned on / off.


requestResolutionSettings({ priority, alwaysShow, needBle })

import LocationEnabler from 'react-native-location-enabler';

const {
  requestResolutionSettings,
  PRIORITIES: { HIGH_ACCURACY },
} = LocationEnabler;

requestResolutionSettings({
  priority: HIGH_ACCURACY, // optional: default BALANCED_POWER_ACCURACY
  alwaysShow: true, // optional: default false
  needBle: true, // optional: default false
});

Display an activity where they can turn location 'on' using a location request.


addListener(callback, context?)

import LocationEnabler from 'react-native-location-enabler';

let listener = null;

function cb(result) {
  const { locationEnabled } = result;

  console.log(`Location are ${locationEnabled ? 'enabled' : 'disabled'}`);

  if (listener !== null) {
    // remove listener when you finish
    listener.remove();
  }
}

listener = LocationEnabler.addListener(cb);

Adds a listener to be invoked when onChangeLocationSettings are emitted. An optional calling context may be provided. The data arguments emitted will be passed to the listener function.


Contributing

Press the STAR button 😀 and see the contributing guide to learn how to contribute to the repository and the development workflow.

Code of Conduct

See the code of conduct guide.

License

See the MIT License