跳至内容
WebViewGold 从 Vibe Coding 到 App Store
中文
获取 WebViewGold

原生功能

OneSignal、Pushwoosh 与 Firebase Cloud Messaging:为 Web 封装应用选择推送服务

推送通知是审核人员最先注意到、用户保留最久的原生功能。WebViewGold 支持 OneSignal、Pushwoosh 和 Firebase Cloud Messaging,每个都只需一个配置开关,此外还支持完全不需要任何服务的本地通知。下面介绍它们的区别,以及哪一个适合 Vibe Coding 应用。

每个平台一次性 $109 起,或由我们的团队全程代劳,$698 起。

  • 审核通过保证 – 否则 14 天内退款
  • 无需编程
  • 一次性付费,免费更新
  • 7×24 小时人工支持
  • 2014 年起德国出品 · ISO 27001

对比

OneSignalPushwooshFirebase Cloud Messaging
控制台完整的活动控制台:分群、模板、定时发送、用户旅程、A/B 测试面向营销的控制台,支持分群、标签和自动化Firebase 控制台中的基础活动编辑器;通过主题和分析受众进行定向
通过代码发送REST API,可按订阅 ID 或您的外部用户 ID 发送REST API从 Cloud Functions 或您的服务器使用 Admin SDK,按 token 或主题发送
Config.swift 中的开关oneSignalID + kPushEnabledkPushwooshEnable + Info.plist 中的 Pushwoosh_APPIDkFirebasePushEnabled + GoogleService-Info.plist
Config.java 中的开关PUSH_ENABLED + build.gradle 中的 IDPUSHWOOSH_ENABLED + strings.xml 和 AndroidManifest.xml 中的 IDFIREBASE_PUSH_ENABLED + google-services.json
Web 应用中的单用户 IDgetonesignalplayerid:// → onesignalplayerid,或通过 kPushEnhanceUrl 在首次请求中附带 ?onesignal_push_id=getpushwooshid:// → pushwooshplayerid,或通过 kPushwooshEnhanceUrl 附带 ?pushwoosh_id=getfirebaseplayerid:// → firebaseplayerid,或通过 kFirebaseEnhanceUrl 附带 ?firebase_push_id=;可选 firebaseTopic
点击后打开深度链接附加数据字段“url”(不是 Launch URL 字段)消息中的自定义数据自定义数据键“url”
Apple 证书在 OneSignal 控制台上传 APNs 密钥(.p8)在 Pushwoosh 中导入证书或密钥把 APNs 密钥上传到 Firebase 项目
费用有限额的免费方案,超出后为付费方案免费试用;WebViewGold 用户可额外免费使用两个月发送免费;您只需为自己的服务器或 Cloud Functions 付费
最适合想要分群和模板、又不想写代码的营销团队需要营销自动化和多渠道消息的团队已经在用 Firebase、以编程方式发送推送的应用

WebViewGold 中的设置工作量

OneSignal:约 30 分钟

创建 OneSignal 应用,为 iOS 添加 APNs 密钥、为 Android 添加 Firebase 凭据,把 App ID 粘贴到 oneSignalID(Config.swift)和 Android 构建配置中,打开启用选项,重新构建。iOS 推送文档和Android 推送文档中附有截图。

Pushwoosh:约 30 分钟

创建 Pushwoosh 应用,导入 iOS 证书或密钥以及 Android 凭据,在 Info.plist 以及 strings.xml 和 AndroidManifest.xml 中设置应用 ID,启用开关,重新构建。

Firebase:30 到 45 分钟

在您的 Firebase 项目中注册 bundle ID 和包名,把两个配置文件下载到项目中,在 Cloud Messaging 下上传 APNs 密钥,启用开关。Firebase 的注册是永久的,所以请先确定好 bundle ID。

本地推送:零设置

在应用打开时由 JavaScript 安排,稍后由设备推送。不需要账号,不需要密钥,也不需要服务器。

按用户定向:保存订阅 ID

控制台可以发送给所有人或某个分群。要通知某个特定用户(“您的订单已发货”),请把设备的订阅 ID 保存在数据库中该用户的记录旁边。三个服务商都适用同样的模式;这里以 OneSignal 为例。

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

async function savePushId(userId) {
  if (!inApp) return;
  window.location.href = "getonesignalplayerid://";        // WebViewGold 会设置 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 }) });
}
// 然后从后端发送:调用 OneSignal REST API,并传入 include_subscription_ids: [pushId]
// 提示:把 autoInjectVariable(iOS)/ AUTO_INJECT_VARIABLES(Android)设为 true,无需调用即可获得这些变量。

我很高兴购买了这个应用!非常简单,文档也很棒。联系客服后,他们回复很快且非常友好,一天之内就解决了我的问题。10/10,值得推荐。

Nelis Geiger · CodeCanyon

无需任何服务的本地通知

WebViewGold 可以通过 JavaScript 安排一条在应用关闭后才触发的通知:sendlocalpushmsg://push.send?s=SECONDS=msg!MESSAGE&!#TITLE&!#URL,其中的 URL 会在用户点击通知时打开;sendlocalpushmsg://push.send.cancel 会清除所有已安排的通知。它能在没有后端的情况下覆盖提醒(“您的课程将在 2 小时后开始”)、连续打卡提醒和购物车放弃提醒。它的局限也很明显:无法从您的服务器发送,没有分群,也没有送达统计。许多应用先用本地推送做提醒,等需要营销活动时再接入服务商。

无论使用哪个服务商,都要控制权限对话框何时出现。在 Config.swift 中把 askforpushpermissionatfirstrun 设为 false,然后在用户注册后或开启通知设置时,从您的 Web 应用触发 registerpush://。在用户感受到价值的时刻请求权限,被允许的概率远高于冷冰冰的首次启动。

该选哪一个

四个问题帮您做决定。

  1. 您只需要由应用自身安排的提醒吗?

    本地推送。如果以后需要营销活动,再添加服务商。

  2. 您的后端是 Firebase(Firebase Studio、Softgen、Databutton)吗?

    FCM。您已经有 Cloud Functions 和 Admin SDK;再加一个配置文件就完成了。只有当非开发人员需要活动控制台时,才需要添加 OneSignal。

  3. 您的后端是 Supabase 或自定义 API,并且会有人手动发送营销活动吗?

    OneSignal 或 Pushwoosh。两者都为营销人员提供控制台,而 edge function 可以调用它们的 REST API 发送事务性消息。

  4. 您想要横跨推送、邮件和应用内消息的营销自动化吗?

    Pushwoosh 正是围绕这一点构建的;OneSignal 也能覆盖。请到它们的网站上比较当前方案;价格和限额会有变化。

让您失去好评和用户的推送错误

  • 用户还没看到任何价值,就在首次启动时请求权限。请在注册后或开启通知设置时再请求。
  • 向只同意接收事务性通知的用户发送营销推送。Apple 准则 4.5.4 要求营销推送须获得用户同意,并提供退订选项。
  • 把深度链接放在 OneSignal 的 Launch URL 字段中:WebViewGold 期望它出现在附加数据字段“url”中。
  • 重命名了 bundle ID,却没有更新 OneSignalNotificationServiceExtension target;它的标识符必须以主 bundle ID 作为前缀。
  • 头几周什么都不发。授予了权限的用户期待一个理由。
  • 忘了 Android 13 及更高版本:系统会在运行时请求通知权限;上面关于时机的建议同样适用。

常见问题

以后可以更换服务商吗?

可以,需要一次商店更新。现有用户打开更新后的应用时,会在新服务商那里完成注册;旧控制台中的分群和历史记录不会转移。

设置推送需要 Mac 吗?

不需要。APNs 密钥是在浏览器中通过 Apple Developer 门户创建的,签名由 Cloud Builder 或 Xcode 处理。OneSignal、Pushwoosh 和 Firebase 都接受 .p8 密钥。

推送在 TestFlight 和 Play 测试轨道中能用吗?

能。测试构建和正式构建一样能收到通知,这正是测试权限请求时机和深度链接的好时候。

我可以从 Lovable 或 Supabase 发送推送吗?

可以从 Supabase edge function 或任意服务器发送:使用您为每个用户保存的订阅 ID 调用服务商的 REST API。

这和 PWA 中的 Web 推送是一回事吗?

不是。iOS 上的 Web 推送只适用于添加到主屏幕的网站,而且有自己的限制。通过 WebViewGold 的原生推送能触达商店应用的每一次安装。

让您的应用上架商店的三种方式

结果相同,只是您需要投入的工作量不同。三种方式都附带审核通过保证和 7×24 小时人工支持。

自己动手

$109 每个平台,一次性付费

WebViewGold 许可证:一个现成的 Xcode 或 Android Studio 项目。粘贴您的 URL,设置名称和图标,开启所需功能,构建并提交。永久免费更新。

在主页查看方案

Cloud Builder

$349 每个许可证,一次性附加购买

无需 Mac、Xcode 或 Android Studio:在浏览器中完成配置,我们在云端构建两个应用,并将其交付到 App Store Connect 和 Play Console。

Cloud Builder 如何运作 试用免费演示

Full Service

$698 每个平台 $798

把您的 URL 和图标发给我们。我们的团队在 72 小时内完成配置、构建并交付您的应用,白标,附源码项目。两个平台共 $1,158。

Full Service 详情 服务提供方: WeSetupYourWebViewApp

冬季特惠价格有效期至 2026年12月31日。

准备好发布您的应用了吗?

App Store & Google Play 审核通过保证 – 否则 14 天内退款

想直接交给我们?Full Service:我们在 72 小时内完成配置、构建并交付,每个平台 $698 起。有疑问?通过 7×24 小时在线聊天联系我们。

退款依据我们 FAQ 中列出的条件:应用因非内容原因被 Apple 和/或 Google 拒审,并在购买后 14 天内提出申请。