Airship Web SDK



The SDK provides an asynchronous loading snippet that allows use of the SDK before it loads. You can get your snippet from the platform setup page for your project on Airship.

<script type="text/javascript">
!function(n,t,c,e,u){function r(n){try{f=n(u)}catch(t){return h=t,void i(p,t)}i(s,f)}function i(n,t){for(var c=0;c<n.length;c++)d(n[c],t);
}function o(n,t){return h?(d(t,h),l):f?(d(n,f),l):(n&&s.push(n),t&&p.push(t),l)}function a(n){return o(!1,n)}function d(t,c){
n.setTimeout(function(){t(c)},0)}var f,h,s=[],p=[],l={then:o,"catch":a,_setup:r};n[e]=l;var v=t.createElement("script");
  'UA', // This value can be changed to use a custom variable name.
  appKey: 'YOUR-APP-KEY',
  vapidPublicKey: 'WEB-PUSH-KEY-FROM-UA',

  // Has no effect on secure domains. Only needed if used on an insecure domain.
  secureIframeUrl: ''

This adds a a UA object to the global scope. This object provides promise-like then and catch functions. They can be called as many times as you'd like and can be chained like promises.

UA.then(cb) Takes a callback function that is called with sdk as its only argument. It is only called if the sdk loads successfully and the browser supports all features. All other features of the SDK can be used from here.

UA.catch(cb) Takes a callback function that is called with the error object as its only argument. It is only called if the SDK encounters an error while loading or the browser is unsupported.

UA.then(function(sdk) {
}).catch(function(err) {

// Multiple calls have no additional expense.
UA.then(function(sdk) {
  $('#register').click(function(ev) { sdk.register() })

NOTE: UA.then will only be called when the SDK has been loaded and if the browser supports the SDK's features. Do not rely on it being called in every browser. Because of this it is good practice to not enable UA SDK-specific parts of your UI until the SDK has loaded.

Unsupported browsers will call .catch(), which likewise will only be called if loading the SDK has an error.

Optional settings

Special case settings that can be added to both the snippet and the push-worker configuration if needed.

workerUrl: '/push-worker.js'

Has a default of /push-worker.js. It should always live at the root of your domain. It only needs to be specified if your worker lives at a different path.

disableAnalytics: false

Has a default of false. If true it will disable analytic reporting for your entire install. Features that depend on analytics being enabled may not work properly if it’s disabled.