跳转至

配置推送通知

定义推送通知

为选定应用程序配置推送相关设置。

使用本机推送发送推送通知。SAP Mobile Services 提供的推送侦听器服务允许后端系统向设备发送本机通知。 应用程序开发人员必须在应用程序中启用推送通知代码。 您还可以使用本机推送机制向用户子集推送通知。

注释

短信 (SMS) 支持不可用。

对于所选应用程序,导航到设置标签,然后从扩展组件功能部分中选择推送通知(或先进行添加)。

  • 选择配置以在提供者级别 (PaaS) 配置推送通知。

    注释

    对于在单一应用主控室 (SaaS) 中管理的本机/MDK 应用,订户管理员可以启用或禁用发送给应用订户的推送通知。请参阅为订户启用/禁用推送 (SaaS)

  • 选择推送注册以查看当前注册并发送推送通知。请参阅管理推送通知以发送消息。

  • 选择服务键值可查看和管理 API 键值。请参阅服务密钥以管理服务密钥。

  • 选择信息来查看功能的详细信息,并以 JSON 格式下载移动服务数据。

Firebase Cloud Messaging 规范标识

对于 Firebase Cloud Messaging (FCM) 客户端,如果客户端应用程序针对同一设备意外地触发多个注册,规范标识可以防止可能发生的问题。 例如设备可能收到重复消息。

如果 FCM 客户端应用程序发送包含旧注册标识的消息,则 FCM 会处理该请求, 并将规范标识插入到响应的 registration_id 字段中。

SAP Mobile Services:

  • 使用规范标识替换针对设备所存储的旧注册标识。

  • 使用规范标识将消息发送到设备。

  • 记录客户事件,将管理规范注册标识所造成的设备注册更新或删除通知给客户端。

为 SAP 移动应用启用预定义推送

启用或禁用预配置的推送设置。

  1. 在 SAP 移动服务主控室中,选择移动应用程序

  2. 选择应用程序,导航到设置标签,然后从扩展组件功能部分中选择推送通知(或先进行添加)。

  3. 预定义全局推送配置 > 预定义下,选择使用官方 SAP 移动应用之一时的预定义推送配置。 如果您使用自己的 APNs 或 Android 推送配置,请将其留空。

    注释

    只有适用于 iOS 和 Android 的 App Store 版本支持预定义推送配置。

    • 针对 B2B 的 SAP Fiori Client ‒ 针对 B2B 的 SAP Fiori Client 推送配置。

    • SAP Mobile Services Client - 移动开发工具包 客户端的推送配置。

    • SAP Asset Manager ‒ SAP Asset Manager 推送配置。

  4. 单击保存

为 Android 应用配置推送

要使客户端应用程序可以接收 Firebase Cloud Messaging (FCM) 通知,请配置 Android 推送通知。

您可以使用 HTTP 版本 1 API,该 API 使用 Firebase 服务账户私钥作为凭据;或旧版已弃用的带有发送方标识和服务器密钥的 HTTP API。

注释

SAP 移动服务主控室目前支持两种方法。 Google 已弃用使用服务器密钥验证的旧 HTTP API,并将于 2024 年 6 月终止验证。 您必须事先将配置更新为 Firebase 服务账户私钥。 请参阅 Google 的私人账户密钥建议,以避免潜在的安全漏洞:管理服务账户密钥的最佳实践

  1. 在 SAP 移动服务主控室中,选择移动应用程序

  2. 选择应用程序,导航到设置标签,然后从扩展组件功能部分中选择推送通知(或先进行添加)。

  3. Android 下,选择是否将 Firebase 服务账户私钥用于推送凭据。

    • 对于 Firebase 服务账户私钥
    • 服务账户私钥文件中,浏览以选择从 Firebase 平台下载的私钥文件。
    • 如果该文件有效,则使用私钥文件中的值自动填充剩余字段。

      属性 描述
      项目标识 在私钥文件中命名的项目标识。
      私钥标识 在私钥文件中命名的私钥标识。
      客户端电子邮件 在私钥文件中命名的客户端电子邮件。
  4. 单击保存

为 iOS 应用配置推送

为所选 iOS 客户端应用程序配置 APNs 推送通知。

您可以使用证书或基于令牌的 APNs 身份验证。使用基于令牌的身份验证的优势在于凭据不会自动过期,而 APNs 证书通常在一年后过期。您可以手动控制用于 developer.apple.com 中基于令牌身份验证的密钥的生命周期。从 developer.apple.com 上的开发人员账户获取用于基于令牌身份验证的凭据。

  1. 在 SAP 移动服务主控室中,选择移动应用程序

  2. 选择应用程序,导航到设置标签,然后从扩展组件功能部分中选择推送通知(或先进行添加)。

  3. 要为开发和测试环境配置 APNs,选择沙箱生产。 请参阅 Apple 开发人员 - 证书 以获取证书类型以及如何检索。 您可以为开发、生产或两者配置 APN 证书或密钥。 Apple 推送控制台中提供了通过沙箱端点交付日志发送的消息。您可以在 Apple 开发人员账户中查看。

    • 当 APN 证书或密钥对开发有效时,选择沙箱

    • 当 APN 证书或密钥对生产有效时,选择生产

    • 如果您不想接收 APNs 推送通知,请选择

  4. 选择证书基于令牌作为身份验证类型。(可选)

    • 对于证书

      1. 选择浏览导航到 APNs 证书文件,选择该文件,然后单击打开

      2. 输入有效密码。

      3. (可选)确定特定于设置为接收通知的 iOS 应用程序的主题包标识。如果未配置,则从证书中提取包标识。

    • 对于基于令牌

      令牌属性

      属性 描述
      主题(包标识) 特定于设置为接收通知的 iOS 应用程序的包标识。
      团队标识 用来开发公司应用的 10 字符团队标识。从开发人员账户获取此值。
      密钥标识 创建密钥时由 Apple 提供的 10 字符字符串。
      密钥 (P8) 从 Apple 下载的身份验证令牌签名密钥 (.p8) 文件。选择浏览导航到 APNs 密钥文件,选择该文件,然后单击打开
  5. 保存更改。

配置 Windows 推送通知

要使已连接到 SAP Mobile Services 的后端服务器向 Windows 桌面和平板计算机应用程序用户发送消息提示框、磁贴、角标和原始更新,请针对所选应用程序配置 Windows 推送通知。

  1. 在 SAP 移动服务主控室中,选择移动应用程序

  2. 选择应用程序,导航到设置标签,然后从扩展组件功能部分中选择推送通知(或先进行添加)。

  3. WNS 下,输入应用程序开发人员所提供的应用程序凭据。

    属性 描述
    包 SID 包安全标识符
    客户端密钥 客户端密钥信息
  4. 单击保存

配置百度推送通知

百度为某些国家/地区的用户提供了推送通知路由服务。要启用此功能,请配置移动服务以连接到该服务。

您必须租用百度服务并获取包含 API 密钥和机密密钥的百度账户凭据。

由于 Google 服务在某些国家/地区受阻,因此 SAP 将使用百度向用户发送推送通知。移动服务 支持两种百度推送模式:

  • 通知模式 ‒ 消息传送到系统托盘(缺省)。

  • 透明模式 ‒ 应用程序确定如何处理该消息。应用程序在推送后端 API 中必须包括参数设置 "msgType": 0,指示应使用透明模式。

要触发百度推送的透明消息,请将属性 "msgType": 0 添加到消息正文。

{
"users": ["user id"],
"notification": {
"alert": "*** 消息内容 baidu message from MS ***",
"badge": 1,
"sound": "sound",
"priority": "priority",
"data": "

{"key":"value"}
",
"sendAsSms": false,
"apns": null,
"gcm": null,
"wns": null,
"baidu": {
"android":

{ "title": "*** 消息标题 Title 1 ***", "description": " ", "notification_builder_id": 1, "notification_basic_style": 6, "open_type": 1, "url": "http://developer.baidu.com", "pkg_content": "pkgContent" }
,
"ios":

{ "alert": "ios_alert", "sound": "ios_sound", "badge": 5 }
,
"msgType": 0
}
}
}
  1. 在 SAP 移动服务主控室中,选择移动应用程序

  2. 选择应用程序,导航到设置标签,然后从扩展组件功能部分中选择推送通知(或先进行添加)。

  3. 百度下,选择启用推送到 Android 设备启用推送到 iOS 设备。通过选择这两个选项,您可以同时向 Android 和 iOS 设备推送。

  4. 指定 API 密钥机密密钥

  5. 保存更改。

    推送消息已接受,但始终以 Message was queued 消息排队并且未在设备上接收。 服务器和客户端使用相同的环境(沙盒生产),但配置的主题用于另一个环境。 当服务器证书用于发送多个无效消息时,APNs 服务也会拒绝消息。请生成新证书以解决此问题。

自定义推送

自定义推送可为某些国家/地区的用户提供到自定义推送服务器的推送通知路由服务。要启用此功能,请配置自定义推送服务器的目标 URL。前提条件包括:

  • 自定义推送服务器必须实施能够从移动服务接收推送通知消息的自定义推送 API,然后协调向移动客户端分发推送通知。

  • 在 SAP 移动服务主控室中,您必须按创建目标中所述设置指向 API 端点地址的目标 URL,例如 https://custom.push.<server>.<host>/push

有关自定义推送 API 详细信息,请参阅 GitHub 资源库

SAP Mobile Services 向推送目标服务器发送常规通知消息。目标服务器对通知的进一步转发进行处理。

有关自定义推送微应用和测试代码的示例,请参阅 GitHub 资源库。自定义推送示例已针对华为和小米设备进行了测试。

  1. 在 SAP 移动服务主控室中,选择移动应用程序

  2. 选择应用程序,导航到设置标签,然后从扩展组件功能部分中选择推送通知(或先进行添加)。

  3. 自定义推送下,选择启用自定义推送

  4. 自定义推送目标中,选择您为自定义推送服务器设置的目标。

  5. 单击保存

使用目标 URL 配置自定义推送后,设备应用程序就可以注册其推送标识,该标识特定于具有移动服务的本地推送供应商,并且移动服务会透明地存储标识。

稍后,后端调用 移动服务 会向这些设备发送推送通知。SAP Mobile Services 根据用户名、应用程序标识和/或 APNs 和 FCM 等其他信息查找注册的推送标识,然后将推送标识和推送消息发送到自定义推送提供者。

在此流程中,移动服务尝试不修改推送消息,并将消息传递到自定义推送提供者进行解析和处理。

浏览器通知

为启用客户端应用程序以接收浏览器通知,启用 W3C 通知。W3C 为 Google Chrome、Mozilla Firefox 以及 Microsoft Edge 浏览器启用推送通知服务。

  1. 在 SAP 移动服务主控室中,选择移动应用程序

  2. 选择应用程序,导航到设置标签,然后从扩展组件功能部分中选择推送通知(或先进行添加)。

  3. W3C 下,选择为 Google Chrome、Mozilla Firefox 以及 Microsoft Edge 浏览器启用 W3C 推送 API

    注释

    禁用 W3C 通知时,会移除之前所有的浏览器订阅,且无法恢复。

  4. 保存更改。

W3C 推送 API 和 移动服务

移动服务支持向使用推送 API 的 Google Chrome、Mozilla Firefox 和 Microsoft Edge(仅适用于基于 Chrome 且自 2020 年 1 月起可用的版本)浏览器发送推送通知。

首先创建应用程序或使用现有应用程序,并确保已启用推送通知功能。要启用推送通知,请参阅浏览器通知。然后,应创建服务密钥,并为其分配角色 push_single。稍后,使用该密钥向用户发送推送通知。

以下部分提供有关维修工的概念和客户端代码的实际订阅调用的信息。要了解更多,请参阅推送 API

检索 applicationServerKeyJavaScript 代码需要 applicationServerKey 才能成功订阅推送消息。移动服务提供常规用途 API,用于检索 pushId,对于 W3C 推送 API 来说对应于服务器的 Base64 编码公钥。

    fetch('/mobileservices/push/v1/runtime/applications/dummy/pushconfigurations/os/w3cpushapi/pushid').then((response) => {
        if (response.status >= 400 && response.status < 500) {
            return response.text()
            .then((responseText) => {
                console.log('Failed web push response: ', response, response.status);
            });
        }
        else {
            response.json().then((pushid) => {
            this._applicationServerKey = pushid.pushId;
            });
        }
        });

将订阅发送至移动服务。完成订阅且可使用 PushSubscription 后,需要将 PushSubscription 详细信息作为 pushToken 发送至移动服务。建议通过设备标识注册令牌,以便同一用户注册多个浏览器进行推送和更新,并分别删除注册。因此,将生成随机值并持久保存到本地存储中。

如果已注册(通过 web 页面的先前加载),服务器将返回 409(冲突)到 POST 请求,这会导致请求作为 PUT 重复,以更新现有用户信息:

     var deviceId = localStorage.getItem("mobile-device-id");
    if (!deviceId) {
      deviceId = Math.floor(Math.random() * 1000000000).toString();
      localStorage.setItem("mobile-device-id", deviceId)
    }
    // try to register the browser - if ther is a conflict we will update the existing record
    fetch('/mobileservices/push/v1/runtime/applications/any/os/w3cpushapi/devices/' + deviceId, {
      method: 'POST',
      cache: 'no-cache',
      headers: {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({ pushToken: JSON.stringify(subscription) })
    }).then((response) => {
      if (response.status == 409) {
        fetch('/mobileservices/push/v1/runtime/applications/any/os/w3cpushapi/devices/' + deviceId, {
          method: 'PUT',
          cache: 'no-cache',
          headers: {
            'Content-Type': 'application/json'
          },
          body: JSON.stringify({ pushToken: JSON.stringify(subscription) })
        }).then((response) => {
          console.log('Push registration update response: ', response, response.status);
        });
      } else {
        console.log('Push registration response: ', response, response.status);
      }
    });

从移动服务中删除订阅。如果用户撤消推送消息的特权,则应删除注册:

     var deviceId = localStorage.getItem("mobile-device-id");
    // Remove the subscription from Mobile Services
    fetch('/mobileservices/push/v1/runtime/applications/any/os/w3cpushapi/devices/' + deviceId, {
      method: 'DELETE',
      cache: 'no-cache'
    }).then((response) => {
      console.log('Push registration delete response: ', response, response.status);
    });

此部分描述如何发送推送消息。

发送推送消息。您需要来自之前创建的服务密钥中的 API 密钥和 URL。替换这两个参数并填写已注册用户的用户名之后,您可以运行这个 curl 命令以发送推送消息:

curl -H 'x-api-key: API_KEY_FROM_PUSH_SERVICE_KEY' -H 'content-type: application/json' --data '{"users":["YOUR_USERNAME"],"notification": {"alert":"Hello"}}' URL_FROM_PUSH_SERVICE_KEY/mobileservices/push/v1/backend/applications/any/notifications/users

根据操作系统,如果浏览器和 Web 页面在前台中,则可能不会显示通知消息。

相同的命令也会将推送消息发送给为同一用户注册的 Android 和 iOS 应用程序(假定在移动服务中正确配置推送)。

使用 SAML 属性作为备选用户名

SAP Mobile Services 推送通知使用用户名作为默认标识符检索通知目标,如通过 REST API 发送通知中所述。 后端可使用不同的 SAML 属性来识别用户并且用户名在后端不可用。 您可以在推送用户名中选择 SAML 属性:

  • 启用使用 SAML 属性作为用户名以使用 SAML 属性作为备选用户名。

  • SAML 属性名称中提供 SAML 属性名称

  • 全局用户标识存储在注册中,如果已作为 SAML 属性提供,则可用于指定接收方。

该值在设备推送注册期间存储或在此设备的推送注册中更新。

注释

SAML 属性由 Identity Provider 在用户登录后提供。 新值将在当前验证已撤销且用户再次登录后使用。 请参阅撤销 OAuth 令牌

检索可用用户属性

您可以通过调用用户信息服务来检索可用用户属性。

  1. 打开 SAP Mobile Services 主控室并导航到移动应用程序配置。

  2. 信息标签中检索应用程序标识。

  3. API 标签中检索服务器 URL。

  4. 调用用户信息服务

    GET {server URL}/mobileservices/application/{application ID}/roleservice/application/{application ID}/v2/Me
    Accept: application/json
    Authorization: Bearer {bearer token}
    
    https://{server URL}/mobileservices/application/{application ID}/roleservice/application/{application ID}/v2/Me?auth=uaa
    

    这将通过详细属性中的可用用户属性返回用户信息:

    {
        "schemas": [
            "urn:ietf:params:scim:schemas:core:2.0:User"
        ],
        "id": "john.doe@acme.corp",
        "userName": "john.doe@acme.corp",
        "name": {
            "familyName": "Doe",
            "givenName": "John"
        },
        "emails": [
            {
                "value": "john.doe@acme.corp"
            }
        ],
        "roles": [
            "openid",
            "user_attributes",
            "uaa.user"
        ],
        "detail": {
            "email": [
                "john.doe@acme.corp"
            ],
            "Groups": [
                "Admin",
                "Sales"
            ],
            "family_name": [
                "Doe"
            ],
            "given_name": [
                "John"
            ],
            "SAPUID": [
                "S01234567"
            ]
            "acr": [
                "urn:oasis:names:tc:SAML:2.0:ac:classes:X509"
            ],
            "remoteEntityId": [
                "acme.account100.ondemand.com"
            ]
        }
    }
    

您可以使用任意具有单个列表项目的属性,例如 emailfamily_namegiven_nameSAPUID

禁用 SAML 属性作为备选用户名

推送用户名中禁用使用 SAML 属性作为用户名。 SAML 属性值不会从现有设备注册中删除,但不用于检索设备注册。

发送推送通知

对所选应用程序管理推送通知。

此功能使用现有推送通知机制将消息发送给接收者。您可以发送本机推送通知。您必须分配有空间的开发人员或管理员角色才能发送推送通知(发送推送通知按钮灰显,表示需要将该角色添加到您的参数文件中)。

注意,对于某些推送提供者,如果您在“用户和设备管理”中删除自动注册的用户注册,还必须从推送通知 > 推送通知中手动删除设备注册。这是因为提供者未提供在推送中进行自动删除所需的信息。对于这些提供者而言,必须执行手动删除:百度、自定义和 W3C。

  1. 在 SAP 移动服务主控室 中,选择移动应用程序 > 本机/MDK

  2. 选择应用程序,导航到设置标签,然后从扩展组件功能部分中选择推送通知(或先进行添加)。

  3. 选择推送注册查看符合推送通知资格的已注册用户的列表。

    您可以单击“定制表列”图标 action-settings 更改显示的列。

    注册用户默认列

    类别 描述
    用户名 注册用户的用户名。
    设备标识 注册用户的设备类型,例如 Android 或 iOS。
    推送提供商 与设备关联的推送提供商。
    推送组 与设备关联的推送组。
    创建时间(UTC-700) 设备注册的时间(UTC 格式)。
    操作 指示您可以针对注册用户采取的任何操作,例如发送通知或删除注册。
  4. 您可以使用筛选器帮助查找注册用户的子集。

    筛选条件

    筛选器 描述
    用户名 输入特定的用户名或用户名开头。
    用户区域设置 输入语言。此字段不会进行验证,因此可以输入任意字符串值。如果知道注册期间用户输入的一个或多个值(例如 EN 或德语),则使用该字段。
    时区 输入一个或多个时区,以逗号分隔。此字段不会进行验证,因此可以输入任意字符串值。如果知道注册期间用户输入的一个或多个值(例如 UTC-1 或 PST),则使用该字段。
    设备型号 选择一个或多个设备模型,例如 iOS 和 Android。
    推送组 输入推送组名称。此字段不会进行验证,因此可以输入任意字符串值。使用该字段创建用于筛选的临时组。推送组不会持久保存。
    注册 Timeframe 从列表中选择时间范围:过去 24 小时、过去 7 天、过去 4 周、过去 3 个月、过去 6 个月、过去 12 个月或自定义(使用日期时间选取器定义范围)。
  5. 选择发送通知向已注册用户发送推送通知。

  6. 发送推送通知对话框中,创建您的推送通知。您可以:

    • 选择常规,然后输入推送通知消息。

    • 选择高级,然后修改默认推送通知消息的 JSON 格式有效负载版本。仅当您是专家用户时才应该执行此操作。选择还原为默认以还原为默认的 JSON 代码。

  7. 选择发送。随即显示消息已成功发送本机推送通知

  8. 选择 delete 从推送通知列表中移除已注册用户。

  9. 如上所述,如果您在“用户和设备管理”中为某些供应商(包括百度、自定义和 W3C)删除了自动注册的用户注册,则可能需要删除已注册用户。

为订户启用推送 (SaaS)

对于在单一应用主控室 (SaaS) 中管理的本机/MDK 应用,订户管理员可以启用或禁用发送给应用订户的推送通知。关闭后,其他推送配置(例如全局推送或推送提供者)不可用。

  1. 在 SAP 移动服务主控室 中,选择移动应用程序 > 本机/MDK

  2. 选择应用程序,导航到设置标签,然后从扩展组件功能部分中选择推送通知(或先进行添加)。

  3. 确保已选择配置标签。

  4. 选择启用移动推送以使订户能够接收在推送注册中创建的推送通知(请参阅发送推送通知)。推动通知将发送给订阅者。

  5. 选择禁用推送通知以关闭发送推送通知。在推送注册中创建的推送通知不会发送给订阅者。

相关信息


最后更新: January 12, 2026