@exponotify/sdk
v1.4.0
Published
Push notifications for Expo apps - register devices, track opens, manage users
Maintainers
Readme
Exponotify SDK
Push notifications for Expo apps. Dead simple.
Installation
npm install @exponotify/sdknpx expo install expo-notifications expo-deviceQuick Start (3 lines)
import Push from '@exponotify/sdk';
// Initialize (call once on app start)
await Push.init('pk_live_your_api_key');
// That's it! 🎉With User ID
// After user logs in
await Push.init('pk_live_xxx', 'user-123');
// Or identify later
await Push.identify('user-123');User Attributes
// Set multiple attributes
await Push.setUser({
name: 'John Doe',
email: '[email protected]',
plan: 'premium',
});
// Set single attribute
await Push.set('country', 'US');Tags
// Add tags (great for segmentation)
await Push.tag('vip', 'beta-tester', 'premium');Full Example
// App.tsx
import { useEffect } from 'react';
import Push from '@exponotify/sdk';
export default function App() {
useEffect(() => {
// Initialize on app start
Push.init('pk_live_xxx');
}, []);
return <YourApp />;
}
// After login
async function onLogin(user) {
await Push.identify(user.id, {
name: user.name,
email: user.email,
});
}
// Track user actions
async function onPurchase(plan) {
await Push.set('plan', plan);
await Push.tag('paying-customer');
}
// On logout
async function onLogout() {
await Push.logout();
}API Reference
| Method | Description |
|--------|-------------|
| Push.init(apiKey, userId?) | Initialize and register for push |
| Push.identify(userId, attrs?) | Identify user after login |
| Push.setUser(attributes) | Set multiple user attributes |
| Push.set(key, value) | Set single attribute |
| Push.tag(...tags) | Add tags to user |
| Push.logout() | Clear user identity |
| Push.unsubscribe() | Unregister from push |
| Push.getToken() | Get the push token |
| Push.isReady() | Check if registered |
Advanced Usage
For more control, use the class-based API:
import { Exponotify, initExponotify, useExponotify } from '@exponotify/sdk';
// Class instance
const client = new Exponotify({ apiKey: 'pk_live_xxx' });
await client.register('user-123');
// React hook
const { register, isRegistered, token } = useExponotify();Listen for Notification Opens
import { useNotificationOpened } from '@exponotify/sdk';
function App() {
useNotificationOpened((data) => {
console.log('User opened notification:', data);
// Handle deep linking
if (data.deepLink) {
navigation.navigate(data.deepLink);
}
});
return <YourApp />;
}Platform Setup
iOS (APNs)
iOS push notifications work automatically with Expo. No additional setup required.
Android (FCM)
Android requires Firebase Cloud Messaging credentials to be configured in Expo:
Create a Firebase Project (if you don't have one):
- Go to Firebase Console
- Create a new project or use an existing one
Get your Service Account Key:
- Go to Project Settings → Service accounts
- Click "Generate new private key"
- Download the JSON file
Upload to Expo:
# Using EAS CLI eas credentials # Select Android → Push Notifications → Add FCM V1 Service Account KeyOr upload via expo.dev:
- Go to your project → Credentials → Android
- Under FCM V1 service account key, click "Add a Service Account Key"
- Upload your JSON file
Rebuild your app (required after adding credentials):
eas build --platform android
⚠️ Without FCM credentials, Android push notifications will fail with error: "Unable to retrieve the FCM server key"
License
MIT
