Send Smarter Push
Notifications Across Mobile & Web

Reach users across iOS, Android, and web with targeted push notifications. Segment audiences, localize messages, track delivery, and manage campaigns from one place.

1.04M Sent
Successfully resolved
9:41
Shopvananow
Flash sale starts now
30% off every winter jacket. Today only.
Shopvana1m ago
La vente flash commence
30% de réduction sur chaque veste d'hiver.
Shopvana5m ago
Venta flash iniciada
30% de descuento en chaquetas.
93.5% Confirmed
Reported directly by the device OS, not just accepted by APNs.
THE PROBLEM

Sending push notifications is simple.
Managing them can get complicated.

As your audience grows across mobile and web, managing targeting, localization, delivery tracking, and campaigns can become harder to coordinate.

Reach the right users

Not every user should get the same notification.

Send in the right language

Different users need the same message in different languages.

Know what was delivered

Sending is not enough. You need to know what actually reached the device.

Painful setup & maintenance

Managing expiring APNs certificates, FCM keys, and device tokens constantly drains your engineering time.

WHAT APPSONAIR PUSH DOES

Create, send, and track push notifications from one place.

Create and manage push notifications across mobile and web from one platform. Target the right audience, personalize messages, and track delivery without switching between tools.

Choose who gets it

Target users by segment, language, platform, activity, or your own customer data.

Send the right message

Create multiple language versions in one notification and deliver the right one to each user.

See what happened

Track what was sent, delivered, and opened after every notification.

Push Notifications for
Mobile Apps and the Web

Engage app users on iOS and Android, and reach website subscribers through supported web browsers, while managing both from AppsOnAir Push Notifications.

Mobile Push Notifications

Reach users through push notifications delivered directly to their iOS and Android apps.

Web Push Notifications

Reach website subscribers with web push notifications delivered through supported browsers.

BUILT FOR BETTER PUSH DELIVERY

Why choose AppsOnAir Push?

AppsOnAir Push is a push notification service for mobile and web, bringing targeted messaging, multilingual notifications, delivery tracking, and developer-friendly integration into one place.

Built to stay affordable

Not every user should get the same notification.

Data tagging & segmentation

Different users need the same message in different languages.

Keep control of your setup

Sending is not enough. You need to know what actually reached the device.

Built for larger audiences

Send and manage notifications without adding more complexity as your user base grows.

USE CASES

Push for the moments that matter

Send timely, relevant notifications based on what your users need and what's happening in your app.

Order & delivery updates
Keep customers informed of shipping status and milestone updates, so they never have to guess where their package is.
Shopvana
now
Out for delivery
Your package is 2 stops away. Track your driver live on the map.
Reminders
Trigger contextual alerts for appointments, tasks, or event schedules to ensure your users never miss an important moment.
09:41
Tuesday, 14th
Calendar
15m ago
Design Sync Meeting
Starts in 15 minutes. Link attached.
Join Call
Snooze
Product & feature updates
Announce newly released features, app version updates, or bug fixes directly to keep your audience engaged and informed.
Version 2.0
App Update
now
New UI & Dark Mode
Experience the completely redesigned interface and faster load times. Tap to explore.
Promotions & offers
Drive engagement and immediate conversions with flash sales, exclusive discounts, and personalized offers sent directly to the lock screen.
Store
1m ago
Flash Sale
50% OFF
Ends in 2 hours
Your exclusive discount
Apply code VIP50 at checkout to claim your offer on all shoes.
Shop Now
Account & security alerts
Notify users immediately about new sign-in attempts, password changes, or suspicious activities to ensure account safety.
Security Alert
now
A new sign-in was detected from Chrome on Mac OS (San Francisco, CA).
Review Activity
This was me
Time-sensitive updates
Deliver critical notifications instantly when every second counts. Ideal for live sports scores, flight gate changes, and severe weather alerts.
Cab arriving
Live
2 min
Honda Civic • AB 1234
Scheduled notifications
Schedule push notifications for a specific date and time, or deliver them based on each user’s local time zone.
Scheduled for Oct 23, 2026 · 09:00 AM
Push
Fixed time User's local time
9:00 AM
Flash sale50% off, today
New York
11:30 PM09:00 AM
Flash sale50% off, today
London
04:30 AM09:00 AM
Flash sale50% off, today
Mumbai
09:00 AM09:00 AM
One moment for every user, anywhere Delivered at 9:00 AM in each user's own time zone
Notification templates
Create reusable notification templates or choose from predefined options to prepare recurring messages faster.
Templates
Your App• now Predefined
Welcome aboard!
Hey there, tap to explore what's new and get started in seconds.
GET STARTED
Your App• now Predefined
Order shipped
Your order is on its way. Track it live.
Your App• now Custom
Weekend flash sale
Get 50% off everything this weekend. Ends tonight!
SHOP NOWREMIND ME LATER
Your App• now Predefined
Cart reminder
Hi there, you left something behind. Complete your order before it sells out.
TRANSPARENT PRICING

Compare push costs at your MAU

Enter your monthly active users to see how AppsOnAir Push compares with other push notification platforms.

MAU
1K10K100K1M
Provider Estimated monthly cost
AppsOnAir Push Pro Plus plan $949
OneSignal $12,019
Pushwoosh $5,000
Customer.io $9,100
Save up to $11,070/month at 1,000,000 MAU
Estimates based on published pricing for 1,000,000 active users.
Start Saving

Estimates are based on publicly available pricing and vary by plan, usage, or additional features.

DEVELOPER SDKS

Send from anywhere in a few lines

Native SDKs for iOS and Android, wrappers for React Native and Flutter, and a REST API that is safe to retry.

push-integration.dev
// Send a rich, multi-language notification with actions and platform metadata
POST https://push.dev.appsonair.com/v1/send-jobs
Authorization: Key aoa_pk_7Kd9...q2Xf

{
  "name": "Launch announcement",
  "payload": [
    {
      "languageCode": "en",
      "title": "Order shipped 📦",
      "subtitle": "Arriving tomorrow",
      "body": "Your order #12345 is on its way.",
      "imageUrl": "https://cdn.acme.com/ship.jpg",
      "url": "https://acme.com/orders/12345"
    },
    {
      "languageCode": "es",
      "title": "Pedido enviado 📦",
      "subtitle": "Llega mañana",
      "body": "Tu pedido #12345 está en camino."
    }
  ],
  "additionalData": {
    "order_id": "12345",
    "screen": "order_detail",
    "promo": {
      "code": "SHIP10",
      "expires": "2026-09-30"
    }
  },
  "actions": [
    {
      "id": "track",
      "title": "Track",
      "url": "acme://orders/12345",
      "foreground": true
    },
    {
      "id": "cancel",
      "title": "Cancel",
      "destructive": true,
      "foreground": false
    }
  ],
  "iosMetadata": {
    "sound": "default",
    "badge": 7,
    "badgeIncrement": 1,
    "mutableContent": true,
    "threadId": "order-updates",
    "category": "order-updates",
    "interruptionLevel": "active",
    "relevanceScore": 0.8,
    "attachments": [
      {
        "id": "hero",
        "url": "https://cdn.acme.com/ship.jpg"
      }
    ]
  },
  "androidMetadata": {
    "priority": "HIGH",
    "channelId": "order-updates",
    "sound": "default",
    "notificationPriority": "PRIORITY_HIGH",
    "clickAction": "OPEN_ORDER_DETAIL",
    "defaultVibrateTimings": true
  },
  "targetType": "ALL",
  "ttlSeconds": 3600,
  "collapseId": "launch-2026",
  "idempotencyKey": "launch-2026-api-attempt-1"
}
Install
npm install appsonair-react-native-apppush@0.0.1-alpha
npx pod-install          # iOS only
Quick start
import AppPushService from 'appsonair-react-native-apppush';

async function setupPush() {
  await AppPushService.initialize({ debug: __DEV__ });

  const granted = await AppPushService.requestPermission();
  if (!granted) return;

  // Resolves `null` until registration finishes, call it *after* permission.
  const token = await AppPushService.getToken();
  console.log('push token', token);

  await AppPushService.login('user-42');
}
Install – pubspec.yaml
dependencies:
  appsonair_flutter_apppush: ^0.0.1-alpha
Quick start – main.dart
import 'package:appsonair_flutter_apppush/appsonair_flutter_apppush.dart';

Future<void> setupPush() async {
  await AppPushService.initialize();

  final granted = await AppPushService.isPermissionGranted();
  if (!granted) {
    await AppPushService.Notifications.requestPermission();
  }

  AppPushService.addTokenListener((token, apnsEnvironment) {
    print('push token: $token');
  });

  await AppPushService.login('user-42');
}

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  runApp(const MyApp());
  await setupPush();
}
Install – Podfile
target 'MyApp' do
  pod 'AppsOnAir-AppPush'
end
Quick start – AppDelegate.swift
// Info.plist, main app target only - required, initialize() can't
// register a device without it:
// <key>AppsonairAppId</key>
// <string>app_8f21cd90</string>

import AppsOnAir_AppPush

class AppDelegate: UIResponder, UIApplicationDelegate {

    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        AppPushService.initialize(debug: true)
        AppPushService.setListener(self)
        AppPushService.Notifications.requestPermission()
        AppPushService.login("user_12345")
        return true
    }
}

extension AppDelegate: PushListener {
    // All four are required in Swift (empty body is fine) - ObjC's
    // AOAPushListener makes them @optional instead.
    func onAPNsTokenUpdated(token: String, environment: APNsEnvironment) {
        print("push token", token)
    }
    func onNotificationReceived(notification: PushNotification) {}
    func onNotificationOpened(notification: PushNotification) {}
    func onError(_ error: PushError) {}
}
Install – build.gradle.kts
// settings.gradle.kts - the SDK is distributed through JitPack
dependencyResolutionManagement {
    repositories {
        google()
        mavenCentral()
        maven("https://jitpack.io")
    }
}

// app/build.gradle.kts
plugins {
    id("com.google.gms.google-services")
}

dependencies {
    implementation("com.github.apps-on-air:appsonair-android-push-notification:0.0.2-alpha")
}

android {
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_17
        targetCompatibility = JavaVersion.VERSION_17
    }
    kotlinOptions { jvmTarget = "17" }
}
Quick start
// Requires google-services.json in app/ from the Firebase Console.
class MyApp : Application() {
    override fun onCreate() {
        super.onCreate()
        AppPushService.initialize(this)
    }
}

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        AppPushService.Notifications.requestPermission(this)
        AppPushService.login("user_12345")
    }
}
FAQ

Got Questions? We've Got Answers

Does AppsOnAir Push Notifications support mobile and web push notifications?

Can I send push notifications in multiple languages?

Can I target specific groups of users?

How much does AppsOnAir Push cost?

Can I move from OneSignal or another push provider?

Can I send web push notifications with AppsOnAir?

Can I send push notifications using an API?