推送通知 API(OneSignal、Firebase、Pushwoosh)
通过 OneSignal、Firebase 或 Pushwoosh 向您的 Android 应用用户发送推送通知——详解设置、深度链接和按用户定向。
推送通知是无需打开应用就能在您的智能手机上显示的通知。此类消息可实现与客户和应用用户的绝佳互动。您的应用无需处于打开状态。这样,您的客户就不会错过任何重要的新闻或消息。推送通知适用于多种场景,例如订单更新、实时动态或社交媒体社区。应用用户必须联网才能接收推送消息。WebViewGold 支持通过多种方式向您的用户发送推送通知。
方案 1:使用本地推送通知的 JavaScript API
您可以在网站中插入一段代码(JavaScript)来定义一条推送通知,该通知可以在您的应用关闭之后显示(在应用打开时进行计划安排)。此方式完全不需要 OneSignal 配置。
<script>
var title = "Your cart is waiting!"; //notification title
var message = "You have left a cart full of dreams and deals behind. Dont leave it feeling abandoned"; //notification message
var seconds = 120; //seconds from now on
var url = "https://myshop.org/cart.php"; //deep-linking URL
window.location.href = "sendlocalpushmsg://push.send?s="+ seconds +"=msg!"+ message +"&!#"+ title +"&!#"+ url +"";
</script>
此功能可用于多种情境(倒计时、欢乐时光(如示例代码中所示)、提醒等)。
要取消所有已计划的本地推送通知,请运行:
<script>
window.location.href = "sendlocalpushmsg://push.send.cancel";
</script>
方案 2:使用 Pushwoosh 远程推送通知
WebViewGold 用户可享受两个月免费的 Pushwoosh 服务!
要享受此优惠,请将您的 WebViewGold 许可证发送电子邮件至 [email protected],稍后您将收到专属回复。
如果您希望在应用中使用 Pushwoosh(这是不错的选择!)来发送推送通知,只需在 Config.java 中启用相应选项,将 PUSHWOOSH_ENABLED 设置为 true,并确保将 string.xml 和 AndroidManifest.xml 文件中的 Pushwoosh ID 更新为您自己的 Pushwoosh ID:


恭喜,您已完成设置。现在可以发送推送通知了:

想要获取每位用户的独立设备 ID,用于个性化推送通知或进一步处理?只需在 Config.java 中将 WONDERPUSH_ENHANCE_WEBVIEW_URL 设置为 true,即可在您的 WebView URL 后附加 ?pushwoosh_id=XYZ:
例如,如果您的 WebView URL 为 https://www.example.org,WebViewGold 将改为调用 https://www.example.org?pushwoosh_id=XYZ。请注意,只有首次 URL 请求会接收该 GET 变量,请将其保存在 session 或 cookie 中,以便在关联页面中稍后使用。作为替代或补充方案,您可以在任意页面通过 JavaScript 获取并处理此信息:
<script> window.location.href = "getpushwooshid://"; alert(pushwooshplayerid); </script>
方案 3:使用 OneSignal 远程推送通知
如果您希望使用 OneSignal 来配置远程推送通知,此视频教程将引导您逐步完成整个过程。
总结一下,OneSignal 推送通知的配置流程如下:
- 前往 Android Studio 并找到 OneSignal 选项。默认情况下,PUSH_ENABLE、PUSH_ENHANCE_WEBVIEW_URL 和 PUSH_RELOAD_ON_USERID 显示为 false,请将其设置为 true。
- 登录您的 OneSignal 账户,选择您的组织和应用名称。
- 如果您尚未在 OneSignal 项目中创建您的应用,请先按照以下步骤操作。
替换 ic_stat_onesignal_default.png 以替换 OneSignal 推送通知的默认铃铛后备图标。
是否希望在您的服务器上获取每个用户的订阅 ID,以便进一步处理并向单个用户发送推送消息?只需在 Config.java 中启用 PUSH_ENHANCE_WEBVIEW_URL 选项(将值从 false 切换为 true),即可在您的 WebView URL 后附加 ?onesignal_push_id=XYZ。如果您的 WebView URL 为 https://www.example.org,WebViewGold 将改为调用 https://www.example.org?onesignal_push_id=XYZ。仅您的首次 URL 请求会获得该 GET 变量,因此请将其保存在 session 或 cookie 中,以便在关联页面中访问它。另一种或额外的方式是在任意页面通过 JavaScript 获取并处理该信息:
<script> window.location.href = "getonesignalplayerid://"; alert(onesignalplayerid); </script>
或者,考虑在 Config.java 中将
AUTO_INJECT_VARIABLES 设置为 true,以便自动将此值(以及其他值)注入到 JavaScript 中,无需事先调用 URL。
方案 4:使用 Firebase 远程推送通知
如果您希望使用 Firebase 来配置远程推送通知,此视频教程将引导您逐步完成整个过程。
总结一下,Firebase 推送通知的配置流程如下:
1. 重命名包名并创建 Firebase 项目
请重命名您的 WebViewGold Android 应用的包名。然后,您需要在 Firebase Console 中创建一个 Firebase 项目。
2. 在 WebViewGold 中启用 Firebase
在 Android Studio 中,打开 Config.java 文件,并将 FIREBASE_PUSH_ENABLED 变量设置为 true。

3. 将您的应用注册到 Firebase
创建好 Firebase 项目后,您可以将 WebViewGold 应用添加到其中。
a. 在 Firebase 控制台项目概览页面中央,点击 Android 图标以启动设置向导。
b. 如果您已经向 Firebase 项目添加过应用,请点击添加应用以显示平台选项。
输入您在此步骤中修改/定义的应用包名。
请确保输入的是您的应用实际使用的包名。在向 Firebase 项目注册应用后,您将无法再添加或修改此值。
4. 点击注册应用按钮。
5. 下载 google-services.json
点击"下载 google-services.json"以获取您的 Firebase Android 配置文件 (google-services.json),并使用 Mac 的 Finder 或 Windows 资源管理器替换 WebViewGold 项目中已包含的示例文件:

就是这样!
如果您希望使用 Firebase URL 深度链接(点击通知时打开特定 URL),请在 Custom Data 字段(位于 Additional options (optional) 部分)中添加所需的 URL,Key = "url",Value = {所需 URL}。

是否希望在您的服务器上获取每个用户的订阅 ID,以便进一步处理并向单个用户发送推送消息?只需在 Config.java 中启用 FIREBASE_PUSH_ENHANCE_WEBVIEW_URL 选项(将值从 false 切换为 true),即可在您的 WebView URL 后附加 ?firebase_push_id=XYZ。如果您的 WebView URL 为 https://www.example.org,WebViewGold 将改为调用 https://www.example.org?firebase_push_id=XYZ。仅您的首次 URL 请求会获得该 GET 变量,因此请将其保存在 session 或 cookie 中,以便在关联页面中访问它。另一种或额外的方式是在任意页面通过 JavaScript 获取并处理该信息:
<script> window.location.href = "getfirebaseplayerid://"; alert(firebaseplayerid); </script>
或者,考虑在 Config.java 中将
AUTO_INJECT_VARIABLES 设置为 true,以便自动将此值(以及其他值)注入到 JavaScript 中,无需事先调用 URL。
方案 5:使用 bubble.io 推送通知
1. 创建一个 bubble.io 应用
2. 安装 WebViewGold OneSignal Push 插件:

3. 按照 OneSignal 说明(见上文)和插件说明(见此处和此处)操作。
推送权限 API:在合适的时机询问并检查当前状态
手动请求推送通知权限(registerpush://)
默认情况下,WebViewGold 会在应用首次启动时向用户请求推送通知权限(Config.java 中 requirePush = true)。权限请求出现在合适的场景中时,同意率会高得多 — 因此您也可以将 requirePush 设置为 false,并在最佳时机(例如登录或引导流程之后)从 Web 应用触发原生权限对话框:
<a href="registerpush://">启用通知</a>
window.location.href = "registerpush://";
注意:这要求在 Config.java 中至少激活一个推送服务(PUSH_ENABLED、FIREBASE_PUSH_ENABLED 或 PUSHWOOSH_ENABLED)。
检查当前推送权限状态(checkNativePushPermissions://)
要了解用户当前是否允许推送通知,请调用:
window.location.href = "checkNativePushPermissions://";
WebViewGold 随后会将 JavaScript 变量 nativePushEnabled(true 或 false)注入您的页面。在 Android 13 及更高版本上,系统通知设置和 POST_NOTIFICATIONS 运行时权限都必须已授予,该值才为 true。示例:
<script>
window.location.href = "checkNativePushPermissions://";
setTimeout(function () {
if (typeof nativePushEnabled !== "undefined" && nativePushEnabled) {
console.log("推送通知已启用");
} else {
// 例如显示您自己的提示,并提供 registerpush:// 或 settingsapp://
}
}, 500);
</script>
如果权限已被永久拒绝,您可以通过 Open App Settings API(settingsapp://)引导用户前往系统设置。