Skip to content
WebViewGold Vibe Coding to App Store
English
Get WebViewGold

Native features

OneSignal vs Pushwoosh vs Firebase Cloud Messaging: choosing push for a web-wrapped app

Push notifications are the native feature reviewers notice first and users keep longest. WebViewGold supports OneSignal, Pushwoosh and Firebase Cloud Messaging with a config switch each, plus local notifications that need no service at all. Here is how they differ and which one fits a vibe-coded app.

From $109 one-time per platform, or let our team do it all from $698.

  • Approval guarantee – or money back within 14 days
  • No coding needed
  • One-time payment, free updates
  • 24/7 human support
  • Made in Germany since 2014 · ISO 27001

The comparison

OneSignalPushwooshFirebase Cloud Messaging
DashboardFull campaign dashboard: segments, templates, scheduling, journeys, A/B testsMarketing-oriented dashboard with segments, tags and automationBasic campaign composer in the Firebase console; topics and analytics audiences for targeting
Sending from codeREST API, addressed by subscription ID or your external user IDREST APIAdmin SDK from Cloud Functions or your server, by token or topic
Switch in Config.swiftoneSignalID + kPushEnabledkPushwooshEnable + Pushwoosh_APPID in Info.plistkFirebasePushEnabled + GoogleService-Info.plist
Switch in Config.javaPUSH_ENABLED + IDs in build.gradlePUSHWOOSH_ENABLED + IDs in strings.xml and AndroidManifest.xmlFIREBASE_PUSH_ENABLED + google-services.json
Per-user ID in the web appgetonesignalplayerid:// → onesignalplayerid, or ?onesignal_push_id= on the first request via kPushEnhanceUrlgetpushwooshid:// → pushwooshplayerid, or ?pushwoosh_id= via kPushwooshEnhanceUrlgetfirebaseplayerid:// → firebaseplayerid, or ?firebase_push_id= via kFirebaseEnhanceUrl; optional firebaseTopic
Deep link on tapAdditional data field "url" (not the Launch URL field)Custom data in the messageCustom data key "url"
Apple certificatesUpload an APNs key (.p8) in the OneSignal dashboardCertificate or key import in PushwooshAPNs key uploaded to the Firebase project
CostFree plan with limits, paid plans aboveFree trial; WebViewGold users get two free monthsFree to send; you pay only for your own server or Cloud Functions
Best forMarketing teams that want segments and templates without codeTeams that want marketing automation and multichannel messagingApps already on Firebase that send programmatically

Setup effort in WebViewGold

OneSignal: about 30 minutes

Create the OneSignal app, add the APNs key for iOS and the Firebase credentials for Android, paste the App ID into oneSignalID (Config.swift) and the Android build configuration, switch the enable options on, rebuild. The iOS push docs and Android push docs have screenshots.

Pushwoosh: about 30 minutes

Create the Pushwoosh application, import the iOS certificate or key and the Android credentials, set the application ID in Info.plist and in strings.xml and AndroidManifest.xml, enable the switches, rebuild.

Firebase: 30 to 45 minutes

Register the bundle ID and package name in your Firebase project, download the two config files into the projects, upload an APNs key under Cloud Messaging, enable the switches. Firebase registrations are permanent, so settle the bundle ID first.

Local push: zero setup

Scheduled from JavaScript while the app is open, delivered later by the device. No account, no keys, no server.

Per-user targeting: store the subscription ID

The dashboards send to everyone or to segments. To notify one specific user ("your order shipped"), save the device's subscription ID next to the user in your database. The same pattern works for all three providers; shown here for OneSignal.

javascript
const inApp = /WebViewGoldApp/.test(navigator.userAgent);

async function savePushId(userId) {
  if (!inApp) return;
  window.location.href = "getonesignalplayerid://";        // WebViewGold sets window.onesignalplayerid
  await new Promise(r => setTimeout(r, 800));
  const pushId = window.onesignalplayerid;                  // Firebase: window.firebaseplayerid, Pushwoosh: window.pushwooshplayerid
  if (!pushId) return;
  await fetch("/api/me/push-id", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ userId, pushId }) });
}
// Then send from your backend: OneSignal REST API with include_subscription_ids: [pushId]
// Tip: set autoInjectVariable (iOS) / AUTO_INJECT_VARIABLES (Android) to true and the variables exist without the call.

I am very happy I bought this app! Extremely easy and great documentation. Was in contact with the customer service, they replied very quickly and very friendly. They solved my question within a day. 10/10 would recommend.

Nelis Geiger · CodeCanyon

Local notifications without any service

WebViewGold can schedule a notification from JavaScript that fires after the app is closed: sendlocalpushmsg://push.send?s=SECONDS=msg!MESSAGE&!#TITLE&!#URL, where the URL opens when the user taps the notification, and sendlocalpushmsg://push.send.cancel clears everything scheduled. It covers reminders ("your session starts in 2 hours"), streak nudges and abandoned carts without a backend. Its limits are the flip side: nothing can be sent from your server, there is no segmentation and no delivery statistics. Many apps start with local push for reminders and add a provider when they need campaigns.

Independently of the provider, control when the permission dialog appears. Set askforpushpermissionatfirstrun to false in Config.swift and trigger registerpush:// from your web app after sign-up or when the user enables a notification setting. Permission requested at a moment of value is granted far more often than at a cold first launch.

Which one to choose

A decision in four questions.

  1. Do you only need reminders scheduled by the app itself?

    Local push. Add a provider later if campaigns become relevant.

  2. Is your backend Firebase (Firebase Studio, Softgen, Databutton)?

    FCM. You already have Cloud Functions and the Admin SDK; one more config file and you are done. Add OneSignal only if non-developers need a campaign dashboard.

  3. Is your backend Supabase or a custom API and someone will send campaigns by hand?

    OneSignal or Pushwoosh. Both give marketers a dashboard, and an edge function can call their REST APIs for transactional messages.

  4. Do you want marketing automation across push, email and in-app messages?

    Pushwoosh is built around that; OneSignal covers it as well. Compare the current plans on their websites; prices and limits change.

Push mistakes that cost reviews and users

  • Asking for permission on first launch before the user has seen any value. Ask after sign-up or when a notification setting is switched on.
  • Sending marketing push to users who only agreed to transactional notifications. Apple Guideline 4.5.4 requires consent for marketing push and an opt-out.
  • Putting the deep link in OneSignal's Launch URL field: WebViewGold expects it in the additional data field "url".
  • Renaming the bundle ID without updating the OneSignalNotificationServiceExtension target; its identifier must keep the main bundle ID as prefix.
  • Never sending anything in the first weeks. Users who granted permission expect a reason.
  • Forgetting Android 13 and newer: the system asks for notification permission at runtime; the timing advice applies there too.

Frequently asked questions

Can I switch providers later?

Yes, with a store update. Existing users are registered with the new provider when they open the updated app; segments and history in the old dashboard do not transfer.

Do I need a Mac to set up push?

No. The APNs key is created in the Apple Developer portal in the browser, and the Cloud Builder or Xcode handle the signing. OneSignal, Pushwoosh and Firebase all accept the .p8 key.

Does push work in TestFlight and Play testing tracks?

Yes. Test builds receive notifications like production builds, which is the right moment to test permission timing and deep links.

Can I send push from Lovable or Supabase?

From a Supabase edge function or any server: call the provider's REST API with the subscription IDs you stored per user.

Is this the same as web push in a PWA?

No. Web push on iOS only works for sites added to the Home Screen and has its own limits. Native push through WebViewGold reaches every install of the store app.

Three ways to get your app into the stores

Same result, different amount of work on your side. All three come with the approval guarantee and 24/7 human support.

Do it yourself

$109 per platform, one-time

The WebViewGold license: a finished Xcode or Android Studio project. Paste your URL, set name and icon, switch on features, build and submit. Free updates forever.

See plans on the main page

Cloud Builder

$349 per license, one-time add-on

No Mac, no Xcode, no Android Studio: configure in the browser, we build both apps in the cloud and hand them to App Store Connect and the Play Console.

How the Cloud Builder works Try the free demo

Full Service

$698 per platform $798

Send us your URL and icon. Our team configures, builds and delivers your app within 72 hours, white-label, with source projects. Both platforms for $1,158.

Full Service details Powered by WeSetupYourWebViewApp

Winter Sale prices valid until December 31, 2026.

Ready to ship your app?

App Store & Google Play approval guarantee – or your money back within 14 days

Rather hand it over? Full Service: we configure, build and deliver within 72 hours, from $698 per platform. Questions? Chat with us 24/7.

Refunds are granted under the conditions listed in our FAQ: a non-content rejection by Apple and/or Google, claimed within 14 days after purchase.