# OneSignal Push Notification

{% hint style="info" %}

<pre data-overflow="wrap"><code>You'll need to import the javascript file in your website before starting from this <a data-footnote-ref href="#user-content-fn-1">link</a>.
</code></pre>

{% endhint %}

**getPlayerId**: It returns playerId from OneSignal - that can be used to send custom notification from OneSignalApis.

{% tabs %}
{% tab title="Plain Javascript" %}

```
const { getPlayerId } = WTN.OneSignal;

getPlayerId().then(function(playerId){
  if(playerId){
    // handle for playerId
    console.log(playerId)
  }
});

```

{% endtab %}

{% tab title="ES5+" %}

```
import { getPlayerId } from "webtonative/OneSignal";

getPlayerId().then(function(playerId){
  if(playerId){
    // handle for playerId
    console.log(playerId)
  }
});

```

{% endtab %}
{% endtabs %}

**setExternalUserId**: To set unique user Id to OneSignal.

{% tabs %}
{% tab title="Plain Javascript" %}

<pre><code>const { setExternalUserId } = WTN.OneSignal;

<strong>setExternalUserId("#$%jfnkjf");
</strong>
</code></pre>

{% endtab %}

{% tab title="ES5+" %}

```
import { setExternalUserId } from "webtonative/OneSignal";

setExternalUserId("#$%jfnkjf");

```

{% endtab %}
{% endtabs %}

**removeExternalUserId**: To remove externalUserId

{% tabs %}
{% tab title="Plain Javascript" %}

```
const { removeExternalUserId } = WTN.OneSignal;

removeExternalUserId();

```

{% endtab %}

{% tab title="ES5+" %}

```
import { removeExternalUserId } from "webtonative/OneSignal";

removeExternalUserId();

```

{% endtab %}
{% endtabs %}

**setTags**: To add custom data attributes to your OneSignal Users

{% tabs %}
{% tab title="Plain Javascript" %}

```
const { setTags } = WTN.OneSignal;

setTags({
  tags:{
    type:'PREMIUM'
  }
});

```

{% endtab %}

{% tab title="ES5+" %}

```
import { setTags } from "webtonative/OneSignal";

setTags({
  tags:{
    type:'PREMIUM'
  }
});

```

{% endtab %}
{% endtabs %}

**Triggers:** [**https://documentation.onesignal.com/docs/iam-triggers**](https://documentation.onesignal.com/docs/iam-triggers)

**addTrigger**

{% tabs %}
{% tab title="Plain Javascript" %}

```
const { addTrigger } = WTN.OneSignal;

addTrigger({
    key: "Trigger Key",
    value: "Trigger Value"
});

```

{% endtab %}

{% tab title="ES5+" %}

```
import { addTrigger } from "webtonative/OneSignal";

addTrigger({
    key: "Trigger Key",
    value: "Trigger Value"
});

```

{% endtab %}
{% endtabs %}

**addTriggers**

{% tabs %}
{% tab title="Plain Javascript" %}

```
const { addTriggers } = WTN.OneSignal;

addTriggers({
    triggers: [
        {
            key: "Trigger Key 1",
            value: "Trigger Value 1"
        },
        {
            key: "Trigger Key 2",
            value: "Trigger Value 2"
        }
    ]
});

```

{% endtab %}

{% tab title="ES5+" %}

```
import { addTriggers } from "webtonative/OneSignal";

addTriggers({
    triggers: [
        {
            key: "Trigger Key 1",
            value: "Trigger Value 1"
        },
        {
            key: "Trigger Key 2",
            value: "Trigger Value 2"
        }
    ]
});

```

{% endtab %}
{% endtabs %}

**removeTrigger**

{% tabs %}
{% tab title="Plain Javascript" %}

```
const { removeTrigger } = WTN.OneSignal;

removeTrigger({
    key: "Trigger Key"
});

```

{% endtab %}

{% tab title="ES5+" %}

```
import { removeTrigger } from "webtonative/OneSignal";

removeTrigger({
    key: "Trigger Key"
});

```

{% endtab %}
{% endtabs %}

**removeTriggers**

{% tabs %}
{% tab title="Plain Javascript" %}

```
const { removeTriggers } = WTN.OneSignal;

removeTriggers({
    keys: [ "Trigger Key 1" , "Trigger Key 2" ]
});

```

{% endtab %}

{% tab title="ES5+" %}

```
import { removeTriggers } from "webtonative/OneSignal";

removeTriggers({
    keys: [ "Trigger Key 1" , "Trigger Key 2" ]
});

```

{% endtab %}
{% endtabs %}

**getTriggerValue - depricated**

{% tabs %}
{% tab title="Plain Javascript" %}

```
const { getTriggerValue } = WTN.OneSignal;

getTriggerValue({
    key: "Trigger Key",
    callback: function(data){
        if(data.isSuccess){
            //data.value contains trigger value for corresponding key
        }
    }
});

```

{% endtab %}

{% tab title="ES5+" %}

```
import { getTriggerValue } from "webtonative/OneSignal";

getTriggerValue({
    key: "Trigger Key",
    callback: function(data){
        if(data.isSuccess){
            //data.value contains trigger value for corresponding key
        }
    }
});

```

{% endtab %}
{% endtabs %}

**getTriggers - depricated**

{% tabs %}
{% tab title="Plain Javascript" %}

```
const { getTriggers } = WTN.OneSignal;

getTriggers({
    callback:function(data){
        if(data.isSuccess){
            //data.triggers contains list of active trigger
            /*
                e.g.     
                {
                    key: "Trigger Key 1",
                    value: "Trigger Value 1"
                },
                {
                    key: "Trigger Key 2",
                    value: "Trigger Value 2"
                }
            /*
        }
    }
});

```

{% endtab %}

{% tab title="ES5+" %}

```
import { getTriggers } from "webtonative/OneSignal";

getTriggers({
    callback:function(data){
        if(data.isSuccess){
            //data.triggers contains list of active trigger
            /*
                e.g.     
                {
                    key: "Trigger Key 1",
                    value: "Trigger Value 1"
                },
                {
                    key: "Trigger Key 2",
                    value: "Trigger Value 2"
                }
            /*
        }
    }
});

```

{% endtab %}
{% endtabs %}

## Setting Email and SMS Numbers

{% hint style="info" %}
Feature released on 12/06/2023
{% endhint %}

Available only on Android

**Setting and Logging Out Email**

{% tabs %}
{% tab title="Plain Javascript" %}

```
const { setEmail, logoutEmail } = WTN.OneSignal;

setEmail({
    emailId:"abc@xyz.com"
});

logoutEmail({
    emailId:"abc@xyz.com"
});

```

{% endtab %}

{% tab title="ES5+" %}

```
import { setEmail, logoutEmail } from "webtonative/OneSignal";

setEmail({
    emailId:"abc@xyz.com"
});

logoutEmail();
```

{% endtab %}
{% endtabs %}

**Setting and Logging Out SMS Number**

{% tabs %}
{% tab title="Plain Javascript" %}

```
const { setEmail, logoutEmail } = WTN.OneSignal;

setSMSNumber({
    smsNumber:"+911234567890"
});
//Pass Mobile Number with ISD Code

logoutSMSNumber({
    smsNumber:"+911234567890"
}); 
```

{% endtab %}

{% tab title="ES5+" %}

```
import { setSMSNumber, logoutSMSNumber } from "webtonative/OneSignal";

setSMSNumber({
    smsNumber:"+911234567890"
});
//Pass Mobile Number with ISD Code

logoutSMSNumber();
```

{% endtab %}
{% endtabs %}

* Changes done on 26th June, 2024 for Android targetSdk 34. Now for logout the email and number is mandatory for the required functions.

## OptIn and OptOut Functions

{% hint style="info" %}
Feature added on 06/12/2024
{% endhint %}

This can be used to manually optin and optout users from OnrSignal.

{% tabs %}
{% tab title="Plain Javascript" %}
const { optInUser, optOutUser } = WTN.OneSignal;

optInUser();

optOutUser();
{% endtab %}

{% tab title="ES5+" %}
import { optInUser, optOutUser } from "webtonative/OneSignal";

optInUser();

optOutUser();
{% endtab %}
{% endtabs %}

[^1]: <https://docs.webtonative.com/javascript-apis/getting-started>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.webtonative.com/javascript-apis/push-notification.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
