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 🙏

© 2025 – Pkg Stats / Ryan Hefner

@poilabs-dev/navigation-sdk-plugin

v1.0.43

Published

Expo plugin for Poilabs Navigation SDK integration

Downloads

29

Readme

Poilabs Navigation SDK Plugin

A React Native and Expo plugin for integrating Poilabs Navigation SDK with indoor navigation capabilities.

🚀 Features

  • ✅ Indoor navigation and mapping
  • ✅ User location tracking
  • ✅ Points of interest display
  • ✅ Route finding and navigation
  • ✅ iOS and Android support
  • ✅ Full TypeScript support
  • ✅ Easy Expo integration

📦 Installation

Installation with Expo (Recommended)

With Expo, most configuration steps are handled automatically! Just add the plugin to your app.json or app.config.js:

{
  "expo": {
    "plugins": [
      [
        "@poilabs-dev/navigation-sdk-plugin",
        {
          "mapboxToken": "YOUR_MAPBOX_TOKEN",
          "jitpackToken": "YOUR_JITPACK_TOKEN"
        }
      ]
    ]
  }
}

Then run:

npm install @poilabs-dev/navigation-sdk-plugin
or
yarn add @poilabs-dev/navigation-sdk-plugin

⚠️ iOS Additional Step Required

npx expo prebuild

Due to file size limitations, you need to manually add the MapboxMobileEvents framework:

1. Download MapboxMobileEvents.xcframework

Navigate to your iOS project directory and run:

cd ios
curl -L -o repo.zip https://github.com/poiteam/react-native-ios-poilabs-navigation-integration/archive/refs/heads/main.zip
unzip -q repo.zip
cp -R react-native-ios-poilabs-navigation-integration-main/ios/MapboxMobileEvents.xcframework .
rm -rf react-native-ios-poilabs-navigation-integration-main repo.zip
cd ..

2. Configure Framework in Xcode

  • Select your project in Project Navigator
  • Go to your app target
  • Navigate to "General" tab
  • Scroll down to "Frameworks, Libraries, and Embedded Content" section
  • Find MapboxMobileEvents.xcframework in the list
  • Change its setting from "Do Not Embed" to "Embed & Sign"

iOS Configuration (Manual Setup)

  1. Add Native Files: For iOS, you need to ensure the plugin files are properly included in your Xcode project:

    Open your Xcode project In Xcode, verify that the PoilabsModule files are added to your project Check that the files appear in the "Build Phases > Compile Sources" section Find + button and click. Then you should "add other".

    • NavigationView.swift
    • PoilabsMapManager.m
    • PoilabsNavigationBridge.h
    • PoilabsNavigationBridge.m
  2. Add MapboxMobileEvents.xcframework (same as Expo instructions above)

  3. Run pod install:

cd ios && pod install

Android Configuration (Manuel Setup)

Android Setup Find the getPackages() method in MainApplication.kt and add the PoilabsPackage:

 override fun getPackages(): List<ReactPackage> {
   val packages = PackageList(this).packages
     // add this line
   packages.add(PoilabsPackage())
   return packages
 }

Clean and rebuild your Android project:

 cd android
 ./gradlew clean
 cd ..
 npx expo run:android

🎯 Usage

Basic Map Display

import React from "react";
import { SafeAreaView, StyleSheet } from "react-native";
import { PoiMapView } from "@poilabs-dev/navigation-sdk-plugin";

const MapScreen = () => {
  return (
    <SafeAreaView style={styles.container}>
      <PoiMapView
        style={styles.map}
        applicationId="YOUR_APPLICATION_ID"
        applicationSecret="YOUR_APPLICATION_SECRET"
        uniqueId="YOUR_UNIQUE_IDENTIFIER"
        language="en"
      />
    </SafeAreaView>
  );
};

const styles = StyleSheet.create({
  container: {
    flex: 1,
  },
  map: {
    flex: 1,
  },
});

export default MapScreen;

Initialize SDK

import {
  initNavigationSDK,
  getReadyForStoreMap,
  askRuntimePermissionsIfNeeded,
} from "@poilabs-dev/navigation-sdk-plugin";

// Request permissions
await askRuntimePermissionsIfNeeded();

// Initialize SDK
const success = await initNavigationSDK({
  applicationId: "YOUR_APPLICATION_ID",
  applicationSecret: "YOUR_APPLICATION_SECRET",
  uniqueId: "YOUR_UNIQUE_IDENTIFIER",
});

if (success) {
  await getReadyForStoreMap();
  console.log("SDK initialized successfully!");
}

Show Points on Map

import { showPointOnMap } from "@poilabs-dev/navigation-sdk-plugin";

// Show single point
await showPointOnMap("STORE_ID_1");

// Show multiple points
await showPointOnMap(["STORE_ID_1", "STORE_ID_2", "STORE_ID_3"]);

Get Route to Destination

import { getRouteTo } from "@poilabs-dev/navigation-sdk-plugin";

// Navigate to a specific store
await getRouteTo("STORE_ID");

🔧 Troubleshooting

iOS Issues

"NavigationView not found" Error

  • Make sure NavigationView.swift is added to your Xcode project
  • Check that the bridging header includes PoilabsNavigationBridge.h
  • Verify that Swift files are properly compiled

MapboxMobileEvents Framework Missing

  • Download the framework from Poilabs support
  • Add it to your Xcode project with "Embed & Sign"
  • Make sure it's added to all targets

Build Errors

cd ios && rm -rf Pods Podfile.lock
pod install

Android Issues

Module Resolution Failed

  • Check that JITPACK_TOKEN and MAPBOX_TOKEN are correctly set
  • Verify repositories are added to project-level build.gradle
  • Clean and rebuild:
    cd android
    ./gradlew clean
    cd ..
    npx expo run:android

MultiDex Issues

  • Ensure multiDexEnabled true is set
  • Add implementation 'androidx.multidex:multidx:2.0.1'

Common Issues

Permission Errors

  • iOS: Check Info.plist permissions
  • Android: Request runtime permissions before using SDK

SDK Not Loading

// Check if module is available
import { NativeModules } from "react-native";
console.log("Available modules:", Object.keys(NativeModules));

📚 API Reference

Components

PoiMapView

| Prop | Type | Default | Description | | ------------------- | ------ | ----------- | --------------------------------------------- | | applicationId | string | - | Required. Application ID from Poilabs | | applicationSecret | string | - | Required. Application secret from Poilabs | | uniqueId | string | - | Required. Unique identifier | | language | string | "en" | Map language ("en" or "tr") | | showOnMap | string | - | Store ID to show initially | | getRouteTo | string | - | Store ID to navigate to initially | | style | object | {flex: 1} | Style object for the map view |

Functions

initNavigationSDK(config)

interface InitConfig {
  applicationId: string;
  applicationSecret: string;
  uniqueId: string;
}

showPointOnMap(storeIds)

// Single store
await showPointOnMap("STORE_001");

// Multiple stores
await showPointOnMap(["STORE_001", "STORE_002"]);

🔑 Getting Credentials

Contact Poilabs support to obtain:

  • APPLICATION_ID
  • APPLICATION_SECRET
  • UNIQUE_IDENTIFIER
  • MAPBOX_TOKEN
  • JITPACK_TOKEN
  • MapboxMobileEvents.xcframework (for iOS)

📄 License

MIT

🆘 Support

  • 📧 Contact Poilabs support team