Web Push Notification
Send web push notification with ease and zero cost on scale.
Prerequisites
- Select your app/workspace, see Create app
- Get your API Key, see Generate API Key
Taak SDK JS
We use Taak SDK JS as client side library. Full source code is available at here
npm i taak-sdk
Check permission
Following code is for React library, but basically must work in both TypeScript and JavaScript projects.
Check if permission given
const checkIfPermissionGiven = async () => {
const res: TaakResponse = await taakSdkClient.checkIfPermissionGiven(true)
if (res.status) {
if (res.data === 'denied') {
presentToast({
message: `Permission denied, you need to unblock ${window.location.origin} in your browser to receive notifications.`,
duration: 3000,
color: 'danger'
})
} else {
presentToast({ message: res.error, color: 'danger', duration: 3000 })
}
setWebPushEnabled(false)
}
}
Subscribe
Check if subscribed
const checkIfSubscribed = async () => {
setInprogress(true)
const res: TaakResponse = await taakSdkClient.checkIfSubscribed(true)
if (res.status) {
presentToast({ message: res.error, color: 'danger', duration: 3000 })
} else {
await subscribe(res.data)
}
setInprogress(false)
}
Subscribe
const subscribe = async (subscription: PushSubscription) => {
const subscriptionObject = JSON.parse(JSON.stringify(subscription))
const cmd: WebPushSubscribeCommand = {
userId,
deviceId: `${osName}::${browserName}::${browserVersion}`,
endpoint: subscription.endpoint,
key: subscriptionObject.keys.p256dh,
auth: subscriptionObject.keys.auth,
}
const res: TaakResponse = await taakSdkClient.subscribeWebPush(cmd)
if (res.status === 201) {
presentToast({ message: 'Success subscription', color: 'success', duration: 3000 })
onSuccess(res.data)
}
else
presentToast({ message: 'Error subscribing ' + res.status, color: 'danger', duration: 3000 })
}
Send
Send web push
const sendTest = async (item: WebPushDTO) => {
setSending(true)
const cmd: WebPushSendCommand = {
payload: 'Hello World',
publicId: item.publicId,
}
const res: TaakResponse = await taakSdkClient.sendWebPush(cmd)
presentToast({ message: `Success sending push with status ${res.status}`, duration: 3000 })
setSending(false)
}
List
Subscription list
const fetchItems = async () => {
setInprogress(true)
const res: TaakResponse = await taakSdkClient.getWebPushesByUserId(userId)
if (res.status === 200)
setItems(res.data)
setInprogress(false)
}
Delete
Delete an subscription
const deleteItem = async (item: WebPushDTO) => {
setDeleting(true)
const res: TaakResponse = await taakSdkClient.deleteWebPush(item.publicId)
if (res.status === 204) {
presentToast({ message: 'Success deleting subscription', duration: 3000 })
await fetchItems()
}
setDeleting(false)
}
Test suite
Products - Series
This series guides you through our products