Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jonz94/capacitor-azure-notification-hubs
⚡️ Capacitor plugin to register push notifications via Azure Notification Hubs.
https://github.com/jonz94/capacitor-azure-notification-hubs
android azure-notification-hubs capacitor capacitor-android capacitor-ios capacitor-plugin ios push-notifications
Last synced: 12 days ago
JSON representation
⚡️ Capacitor plugin to register push notifications via Azure Notification Hubs.
- Host: GitHub
- URL: https://github.com/jonz94/capacitor-azure-notification-hubs
- Owner: jonz94
- License: 0bsd
- Created: 2022-08-28T14:00:47.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-07-15T09:42:47.000Z (4 months ago)
- Last Synced: 2024-09-19T01:09:33.655Z (about 2 months ago)
- Topics: android, azure-notification-hubs, capacitor, capacitor-android, capacitor-ios, capacitor-plugin, ios, push-notifications
- Language: Swift
- Homepage: https://www.npmjs.com/package/@jonz94/capacitor-azure-notification-hubs
- Size: 594 KB
- Stars: 7
- Watchers: 1
- Forks: 5
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
Azure Notification Hubs
@jonz94/capacitor-azure-notification-hubs
Capacitor plugin to register push notifications via Azure Notification Hubs.## Install
```shell
npm install @jonz94/capacitor-azure-notification-hubs @capacitor/push-notifications
npx cap sync
```## iOS
On iOS you must enable the Push Notifications capability. See [Setting Capabilities](https://capacitorjs.com/docs/ios/configuration#setting-capabilities) for instructions on how to enable the capability.
After enabling the Push Notifications capability, add the following lines to `ios/App/App/AppDelegate.swift`:
```diff
import UIKit
import Capacitor@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {var window: UIWindow?
+ func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
+ NotificationCenter.default.post(name: .capacitorDidRegisterForRemoteNotifications, object: deviceToken)
+ }
+
+ func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
+ NotificationCenter.default.post(name: .capacitorDidFailToRegisterForRemoteNotifications, object: error)
+ }// ...
}
```## Android
The Push Notification API uses [Firebase Cloud Messaging](https://firebase.google.com/docs/cloud-messaging) SDK for handling notifications. See [Set up a Firebase Cloud Messaging client app on Android](https://firebase.google.com/docs/cloud-messaging/android/client) and follow the instructions for creating a Firebase project and registering your application. There is no need to add the Firebase SDK to your app or edit your app manifest - the Push Notifications provides that for you. All that is required is your Firebase project's `google-services.json` file added to the module (app-level) directory of your app.
### Variables
This plugin will use the following project variables (defined in your app's `variables.gradle` file):
- `firebaseMessagingVersion` version of `com.google.firebase:firebase-messaging` (default: `23.1.2`)
- `azureNotificationHubsVersion` version of `com.microsoft.azure:notification-hubs-android-sdk-fcm` (default: `2.0.0`)
- `androidVolleyVersion` version of `com.android.volley:volley` (default: `1.2.1`)
- `androidxCoreKTXVersion` version of `androidx.core:core-ktx` (default: `1.12.0`)
- `kotlin_version` version of `org.jetbrains.kotlin:kotlin-stdlib` (default: `1.9.10`)## Configuration
No configuration required for this plugin.
## Usage
```typescript
import { Device } from '@capacitor/device';
import { PushNotifications } from '@capacitor/push-notifications';
import { AzureNotificationHubs } from '@jonz94/capacitor-azure-notification-hubs';const addListeners = async () => {
await AzureNotificationHubs.addListener('registration', token => {
console.log('Registration token: ', token.value);
});await AzureNotificationHubs.addListener('registrationError', err => {
console.error('Registration error: ', err.error);
});
}const registerNotifications = async () => {
let permissionStatus = await PushNotifications.checkPermissions();if (permissionStatus.receive === 'prompt') {
permissionStatus = await PushNotifications.requestPermissions();
}if (permissionStatus.receive !== 'granted') {
throw new Error('User denied permissions!');
}const { identifier } = await Device.getId();
const myDeviceTag = `${identifier}-${Date.now()}`
await AzureNotificationHubs.register({
notificationHubName: 'azure-notification-hub-name',
connectionString: 'my-connection-string',
deviceTag: myDeviceTag,
});
}
```## API
* [`register(...)`](#register)
* [`addListener('registration', ...)`](#addlistenerregistration-)
* [`addListener('registrationError', ...)`](#addlistenerregistrationerror-)
* [`removeAllListeners()`](#removealllisteners)
* [Interfaces](#interfaces)### register(...)
```typescript
register(info: RegisterInfo) => Promise
```Register the app to receive push notifications.
This method will trigger the `'registration'` event with the push token or
`'registrationError'` if there was a problem. It does not prompt the user for
notification permissions, use `PushNotifications.requestPermissions()` from
`@capacitor/push-notifications` first.| Param | Type |
| ---------- | ----------------------------------------------------- |
| **`info`** |RegisterInfo
|**Since:** 1.0.0
--------------------
### addListener('registration', ...)
```typescript
addListener(eventName: 'registration', listenerFunc: (token: Token) => void) => Promise
```Called when the push notification registration finishes without problems.
Provides the push notification token.
| Param | Type |
| ------------------ | ----------------------------------------------------------- |
| **`eventName`** |'registration'
|
| **`listenerFunc`** |(token: Token) => void
|**Returns:**
Promise<PluginListenerHandle>
**Since:** 1.0.0
--------------------
### addListener('registrationError', ...)
```typescript
addListener(eventName: 'registrationError', listenerFunc: (error: RegistrationError) => void) => Promise
```Called when the push notification registration finished with problems.
Provides an error with the registration problem.
| Param | Type |
| ------------------ | ----------------------------------------------------------------------------------- |
| **`eventName`** |'registrationError'
|
| **`listenerFunc`** |(error: RegistrationError) => void
|**Returns:**
Promise<PluginListenerHandle>
**Since:** 1.0.0
--------------------
### removeAllListeners()
```typescript
removeAllListeners() => Promise
```Remove all native listeners for this plugin.
**Since:** 1.0.0
--------------------
### Interfaces
#### RegisterInfo
| Prop | Type | Description | Since |
| ------------------------- | ------------------- | -------------------------- | ----- |
| **`notificationHubName`** |string
| The notification hub name. | 1.0.0 |
| **`connectionString`** |string
| The connection string. | 1.0.0 |
| **`deviceTag`** |string
| The device tag. | 1.0.0 |#### PluginListenerHandle
| Prop | Type |
| ------------ | ----------------------------------------- |
| **`remove`** |() => Promise<void>
|#### Token
| Prop | Type | Description | Since |
| ----------- | ------------------- | ------------------------------------------------------------------------ | ----- |
| **`value`** |string
| On iOS it contains the APNS token. On Android it contains the FCM token. | 1.0.0 |#### RegistrationError
| Prop | Type | Description | Since |
| ----------- | ------------------- | -------------------------------------------------- | ----- |
| **`error`** |string
| Error message describing the registration failure. | 1.0.0 |## Changelog
See [CHANGELOG.md](https://github.com/jonz94/capacitor-azure-notification-hubs/blob/main/CHANGELOG.md).
## License
See [LICENSE](https://github.com/jonz94/capacitor-azure-notification-hubs/blob/main/LICENSE).