Skip to main content

概述

如果您有一个移动友好的网站并希望将其转换为可下载的移动应用程序以上架 Apple App Store 或 Google Play Store,Median.co 是一个强大的解决方案。它还提供了与 OneSignal 的无缝集成以启用推送通知。

设置

1. 使用 Median.co 创建您的应用

  1. 遵循 Median.co 入门指南
  2. <https://median.co/app> 构建应用程序。

2. 设置 OneSignal

  1. 转到 onesignal.com 并创建账户。
  2. 配置您的 OneSignal 应用程序和平台。

配置您的 OneSignal 应用和平台

使用您支持的平台配置您的 OneSignal 应用——Apple (APNs)、Google (FCM)、华为 (HMS) 和/或 Amazon (ADM)。
如果您的组织已有 OneSignal 账户,请申请加入组织。否则,请注册免费账户以开始使用。
1

创建或选择您的应用

点击 新应用/网站 创建新应用,或在 设置 > 推送和应用内 中向现有应用添加平台。选择您要配置的平台,然后点击 下一步:配置您的平台
OneSignal 控制台显示包含组织名称、应用名称和频道选择的新应用设置流程
2

配置平台凭据

为您的平台输入凭据:输入您的凭据后点击 保存并继续
3

保存您的应用 ID 并安装 SDK

您的 应用 ID 显示在最终屏幕上。复制并保存它——初始化 SDK 时需要使用它。选择您的 SDK 平台,然后按照设置指南操作。
OneSignal 控制台显示设置完成后的应用 ID 和团队邀请选项

3. 将 OneSignal 链接到您的 Median 应用

将 OneSignal 应用程序 ID 粘贴到您的 Median.co(GoNative)应用程序配置中。

测试 OneSignal SDK 集成

本指南帮助您通过测试推送通知、订阅注册和应用内消息传递来验证您的 OneSignal SDK 集成是否正常工作。

检查移动订阅

1

在测试设备上启动您的应用。

如果您在初始化期间添加了 requestPermission 方法,原生推送权限提示应该会自动出现。
2

检查您的 OneSignal 仪表板

在接受提示之前,检查 OneSignal 仪表板:
  • 转到 受众 > 订阅
  • 您应该看到状态为 “Never Subscribed” 的新条目。
3

返回应用程序并在提示上点击允许。

4

刷新 OneSignal 仪表板订阅页面。

订阅状态现在应该显示 已订阅
您已成功创建了移动订阅。 当用户首次在设备上打开您的应用程序时,或者如果他们在同一设备上卸载并重新安装您的应用程序时,会创建移动订阅。

设置测试订阅

测试订阅有助于在发送消息之前测试推送通知。
1

添加到测试订阅。

在仪表板中,在订阅旁边,点击 选项(三个点) 按钮并选择 添加到测试订阅
2

为您的订阅命名

为订阅命名,以便您稍后在 测试订阅 中轻松识别您的设备。
3

创建测试用户细分。

转到 受众 > 细分 > 新建细分
4

命名细分。

将细分命名为 Test Users(名称很重要,因为稍后会用到)。
5

添加测试用户过滤器并点击创建细分。

您已成功创建了测试用户细分。 我们现在可以测试向此单个设备和测试用户组发送消息。

通过 API 发送测试推送

1

获取您的应用 API 密钥和应用 ID。

在您的 OneSignal 仪表板中,转到设置 > 密钥和 ID
2

更新提供的代码。

将下面代码中的 YOUR_APP_API_KEYYOUR_APP_ID 替换为您的实际密钥。此代码使用我们之前创建的 Test Users 细分。
curl -X \
POST --url 'https://api.onesignal.com/notifications' \
 --header 'content-type: application/json; charset=utf-8' \
 --header 'authorization: Key YOUR_APP_API_KEY' \
 --data \
 '{
  "app_id": "YOUR_APP_ID",
  "target_channel": "push",
  "name": "Testing basic setup",
  "headings": {
  	"en": "👋"
  },
  "contents": {
    "en": "Hello world!"
  },
  "included_segments": [
    "Test Users"
  ],
  "ios_attachments": {
    "onesignal_logo": "https://avatars.githubusercontent.com/u/11823027?s=200&v=4"
  },
  "big_picture": "https://avatars.githubusercontent.com/u/11823027?s=200&v=4"
}'
3

运行代码。

在您的终端中运行代码。
4

检查图像和已确认投递。

如果所有设置步骤都成功完成,测试订阅应该收到包含图像的通知:
图像在折叠的通知视图中显示较小。展开通知以查看完整图像。
5

检查已确认投递。

在您的仪表板中,转到投递 > 已发送消息,然后点击消息查看统计信息。您应该看到已确认统计,意味着设备收到了推送。
您已成功通过我们的 API 向细分发送了通知。
  • 没有收到图像?您的Notification Service Extension可能缺失。
  • 没有确认投递?检查您的 App Groups 设置
  • 遇到问题?将 API 请求和从应用启动开始到结束的日志复制粘贴到 .txt 文件中。然后将两者都分享给 support@onesignal.com

发送应用内消息

应用内消息让您在用户使用您的应用时与他们交流。
1

在设备上关闭或后台运行您的应用。

这是因为用户必须在新会话开始_之前_满足应用内受众条件。在 OneSignal 中,当用户在应用在后台或关闭至少 30 秒后打开应用时,新会话开始。有关更多详情,请参阅我们关于如何显示应用内消息的指南。
2

创建应用内消息。

  • 在您的 OneSignal 仪表板中,导航到消息 > 应用内 > 新应用内
  • 查找并选择欢迎消息。
  • 将您的受众设置为我们之前使用的测试用户细分。
3

如需要,自定义消息内容。

4

将触发器设置为'在应用打开时'。

5

计划频率。

计划 > 您希望多久显示一次此消息?下选择每次满足触发条件时
6

使消息上线。

点击使消息上线,以便测试用户每次打开应用时都可以使用它。
7

打开应用并查看消息。

应用内消息上线后,打开您的应用。您应该看到它显示:
没有看到消息?
  • 开始新会话
    • 您必须在重新打开之前关闭或将应用后台运行至少 30 秒。这确保开始新会话。
    • 有关更多信息,请参阅如何显示应用内消息
  • 仍在 Test Users 细分中?
    • 如果您重新安装或更换了设备,请重新将设备添加到测试订阅并确认它是测试用户细分的一部分。
  • 遇到问题?
    • 在重现上述步骤时遵循获取调试日志。这将生成您可以与 support@onesignal.com 共享的额外日志,我们将帮助调查发生了什么。
您已成功设置 OneSignal SDK 并学习了重要概念,如:

提示推送权限

不要在应用打开时立即调用 requestPermission(),而是采取更具战略性的方法。在请求权限之前,使用应用内消息解释推送通知的价值。 有关最佳实践和实施详情,请参阅我们的提示推送权限指南。

常见问题

如何在客户端访问 OneSignal 数据?

使用 Median Native JavaScript Bridge 方法 median_onesignal_info 来检索 OneSignal 订阅 ID(oneSignalUserId)和订阅状态。
javascript
  var osSubscriptionId = "the OneSignal Subscription ID string";
  var isSubscribedToPushNotifications;

  median.onesignal.onesignalInfo().then(function (oneSignalInfo) {
    console.log(oneSignalInfo);
    osSubscriptionId = oneSignalInfo.oneSignalUserId;
    isSubscribedToPushNotifications = oneSignalInfo.oneSignalSubscribed;
  });
更多详情请参阅 Median.co 文档

如何向我的 Median 应用发送深度链接推送通知?

Median 应用使用深度链接提供原生体验,而不是打开弹出浏览器。

使用 OneSignal 仪表板时:

  • 不要使用启动 URL 字段。
  • 相反,使用附加数据字段。
    • 添加键:targetUrl(大写”U”)
    • 添加值:您希望用户打开的 URL。

使用 REST API 时:

在推送负载的 data 对象中包含 targetUrl。示例:
{
  "app_id": "YOUR-APP-ID",
  "include_player_ids": ["USER-ID"],
  "data": { "targetUrl": "https://example.com/page" },
  "contents": { "en": "Check out this page!" }
}

同时发送给网页和移动设备?

如果您同时发送给网页和移动设备: 在启动 URL 部分,选择”网页/应用不同 URL”。 将 APP URL 字段留空以防止覆盖。