
Security News
vlt Launches "reproduce": A New Tool Challenging the Limits of Package Provenance
vlt's new "reproduce" tool verifies npm packages against their source code, outperforming traditional provenance adoption in the JavaScript ecosystem.
@parse/push-adapter
Advanced tools
The official Push Notification adapter for Parse Server. See Parse Server Push Configuration for more details.
npm install --save @parse/push-adapter@<VERSION>
Replace <VERSION>
with the version you want to install.
import { ParsePushAdapter } from '@parse/push-adapter';
// For CommonJS replace the import statemtent above with the following line:
// const ParsePushAdapter = require('@parse/push-adapter').default;
const parseServerOptions = {
push: {
adapter: new ParsePushAdapter({
ios: {
// Apple push options
},
android: {
// Android push options
},
web: {
// Web push options
},
expo: {
// Expo push options
}
})
}
// Other Parse Server options
};
Parse Server Push Adapter currently supports these types of Apple ecosystems:
ios
: iPhone, iPad, and iPod touch appsosx
: macOS, and macCatalyst appstvos
: tvOS appswatchos
: watchOS appsPush notifications can be delivered to Apple devices either via Apple Push Notification Service (APNS) or Firebase Cloud Messaging (FMC). Note that each category of Apple devices requires their own configuration section:
Example options:
Both services (APNS, FCM) can be used in combination for different Apple ecosystems.
ios: {
// Deliver push notifications to iOS devices via APNS
token: {
key: __dirname + '/apns.p8',
keyId: '<APNS_KEY_ID>',
teamId: '<APNS_TEAM_ID>'
},
topic: '<BUNDLE_IDENTIFIER>',
production: true
},
osx: {
// Deliver push notifications to macOS devices via FCM
firebaseServiceAccount: __dirname + '/firebase.json'
}
Delivering push notifications to Android devices can be done via Firebase Cloud Messaging (FCM):
Example options:
android: {
firebaseServiceAccount: __dirname + '/firebase.json'
}
This section contains some considerations when using FCM, regardless of the destination ecosystems the push notification is sent to.
The Firebase console allows to easily create and download a Google Cloud service account key JSON file with the required permissions. Instead of setting firebaseServiceAccount
to the path of the JSON file, you can provide an object representing a Google Cloud service account key:
android: {
firebaseServiceAccount: {
projectId: '<PROJECT_ID>',
clientEmail: 'example@<PROJECT_ID>.iam.gserviceaccount.com',
privateKey: '-----BEGIN PRIVATE KEY-----<KEY>-----END PRIVATE KEY-----\n'
}
}
This can be helpful if you are already managing credentials to Google Cloud APIs in other parts of your code and you want to reuse these credentials, or if you want to manage credentials on a more granular level directly in Google Cloud. Make sure that the service account has the permission cloudmessaging.messages.create
which is for example part of role Firebase Cloud Messaging API Admin
.
⚠️ Sending push notifications to Android devices via the FCM legacy API was deprecated on June 20 2023 and was announced to be decommissioned in June 2024. See Google docs. To send push notifications to the newer FCM HTTP v1 API you need to update your existing push configuration for Android by replacing the key apiKey
with firebaseServiceAccount
.
Example options (deprecated):
android: {
// Deliver push notifications via FCM legacy API (deprecated)
apiKey: '<API_KEY>'
}
With the introduction of the FCM HTTP v1 API, support for HTTP/2 was added which provides faster throughput for push notifications. To use the older version HTTP/1.1 set fcmEnableLegacyHttpTransport: true
in your push options.
Example options:
android: {
firebaseServiceAccount: __dirname + '/firebase.json',
fcmEnableLegacyHttpTransport: true
}
Occasionally, errors within the Firebase Cloud Messaging (FCM) client may not be managed internally and are instead passed to the Parse Server Push Adapter. These errors can occur, for instance, due to unhandled FCM server connection issues.
resolveUnhandledClientError: true
: Logs the error and gracefully resolves it, ensuring that push sending does not result in a failure.resolveUnhandledClientError: false
: Causes push sending to fail, returning a Parse.Error.OTHER_CAUSE
with error details that can be parsed to handle it accordingly. This is the default.In both cases, detailed error logs are recorded in the Parse Server logs for debugging purposes.
Example options:
expo: {
accessToken: '<EXPO_ACCESS_TOKEN>'
}
For more information see the Expo docs.
Parse Server already comes bundled with a specific version of the push adapter. This installation is only necessary when customizing the push adapter version that should be used by Parse Server. When using a customized version of the push adapter, ensure that it's compatible with the version of Parse Server you are using.
When using the bundled version, it is not necessary to initialize the push adapter in code and the push options are configured directly in the push
key, without the nested adapter
key:
const parseServerOptions = {
push: {
ios: {
// Apple push options
}
// Other push options
}
// Other Parse Server options
};
You can enable verbose logging to produce a more detailed output for all push sending attempts with the following environment variables:
VERBOSE=1
or
VERBOSE_PARSE_SERVER_PUSH_ADAPTER=1
FAQs
Base parse-server-push-adapter
The npm package @parse/push-adapter receives a total of 23,204 weekly downloads. As such, @parse/push-adapter popularity was classified as popular.
We found that @parse/push-adapter demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
vlt's new "reproduce" tool verifies npm packages against their source code, outperforming traditional provenance adoption in the JavaScript ecosystem.
Research
Security News
Socket researchers uncovered a malicious PyPI package exploiting Deezer’s API to enable coordinated music piracy through API abuse and C2 server control.
Research
The Socket Research Team discovered a malicious npm package, '@ton-wallet/create', stealing cryptocurrency wallet keys from developers and users in the TON ecosystem.