为选定应用程序配置推送相关设置。
使用本机推送发送推送通知。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 移动应用启用预定义推送
启用或禁用预配置的推送设置。
在 SAP 移动服务主控室中,选择
移动应用程序
。
选择应用程序,然后选择
已分配功能
下的
移动推送通知
(或先进行添加);对于 SAP Mobile Cards,选择
功能 > 推送通知
。
在
预定义的全局推送配置 > 预定义针对
下,选择预定义推送证书(或留空以使用客户配置,例如 Android 和 Apple 的客户配置)。
只有适用于 iOS 和 Android 的 App Store 版本支持预定义推送。
SAP Fiori Client
- 本机/
MDK
应用或 SAP Mobile Cards 的推送证书。
SAP CoPilot
- SAP CoPilot 的推送证书。
SAP Mobile Services Client
- 移动开发工具包客户端的推送证书。
SAP Asset Manager
- SAP Asset Manager 的推送证书。
为 Android 应用配置推送
要使客户端应用程序可以接收 Firebase Cloud Messaging (FCM) 通知,请配置 Android 推送通知。
您可以使用旧 HTTP API(使用项目中的服务器密钥作为凭据)或 HTTP v1 API(使用 Firebase 服务账户私钥作为凭据)。如果计划使用私钥文件,请提前从 Firebase 平台下载。
SAP 移动服务主控室目前支持两种方法。Google 建议迁移到 Firebase 服务账户私钥,该私钥提供附加安全性和交钥匙配置。要了解详细信息,请参阅
从旧 HTTP 迁移到 HTTP v1
。
在 SAP 移动服务主控室中,选择
移动应用程序
。
选择应用程序,然后选择
已分配功能
下的
移动推送通知
(或先进行添加);对于 SAP Mobile Cards,选择
功能 > 推送通知
。
在
Android
下,选择使用
Firebase 服务账户私钥
还是
服务器密钥
来推送凭据。
对于
Firebase 服务账户私钥
:
在
服务账户私钥文件
中,浏览以选择从 Firebase 平台下载的私钥文件。
如果该文件有效,则使用私钥文件中的值自动填充剩余字段。
为 iOS 应用配置推送
为所选 iOS 客户端应用程序或 SAP Mobile Cards 配置 APNS 推送通知。
您可以使用证书或基于令牌的 APNS 身份验证。使用基于令牌的身份验证的优势在于凭据不会自动过期,而 APNS 证书通常在一年后过期。
您可以手动控制用于
developer.apple.com
中基于令牌身份验证的密钥的生命周期。
从
developer.apple.com
上的开发人员账户获取用于基于令牌身份验证的凭据。
在 SAP 移动服务主控室中,选择
移动应用程序
。
选择应用程序,然后选择
已分配功能
下的
移动推送通知
(或先进行添加);对于 SAP Mobile Cards,选择
功能 > 推送通知
。
要为开发和测试环境配置 APNS,选择
沙箱
或
生产
。
请参阅
Apple 开发人员 - 证书
以获取证书类型以及如何检索。
如果您的移动应用使用 iOS 开发证书签名,请选择
沙盒
。
如果您的移动应用使用 iOS 分配证书签名,请选择
生产
。
如果您不想接收 APNS 推送通知,请选择
无
。
配置 Windows 推送通知
要使已连接到 SAP Mobile Services 的后端服务器向 Windows 桌面和平板计算机应用程序用户发送消息提示框、磁贴、角标和原始更新,请针对所选应用程序配置 Windows 推送通知。
在 SAP 移动服务主控室中,选择
移动应用程序
。
选择应用程序,然后选择
已分配功能
下的
移动推送通知
(或先进行添加);对于 SAP Mobile Cards,选择
功能 > 推送通知
。
在
WNS
下,输入应用程序开发人员所提供的应用程序凭据。
配置百度推送通知
百度为某些国家/地区的用户提供了推送通知路由服务。要启用此功能,请配置移动服务以连接到该服务。
您必须租用百度服务并获取包含 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
保存更改。
推送消息已接受,但始终以
Message was queued
消息排队并且未在设备上接收。 服务器和客户端使用相同的环境(
沙盒
或
生产
),但配置的主题用于另一个环境。 当服务器证书用于发送多个无效消息时,APNS 服务也会拒绝消息。请生成新证书以解决此问题。
自定义推送
自定义推送可为某些国家/地区的用户提供到自定义推送服务器的推送通知路由服务。要启用此功能,请配置自定义推送服务器的目标 URL。前提条件包括:
自定义推送服务器必须实施能够从移动服务接收推送通知消息的自定义推送 API,然后协调向移动客户端分发推送通知。
在 SAP 移动服务主控室中,您必须按
创建目标
中所述设置指向 API 端点地址的目标 URL,例如
https://custom.push.<server>.<host>/push
。
有关自定义推送 API 详细信息,请参阅
GitHub 资源库
。
SAP Mobile Services 向推送目标服务器发送常规通知消息。目标服务器对通知的进一步转发进行处理。
有关自定义推送微应用和测试代码的示例,请参阅
GitHub 资源库
。自定义推送示例已针对华为和小米设备进行了测试。
在 SAP 移动服务主控室中,选择
移动应用程序
。
选择应用程序,然后选择
已分配功能
下的
移动推送通知
(或先进行添加);对于 SAP Mobile Cards,选择
功能 > 推送通知
。
在
自定义推送
下,选择
启用自定义推送
。
在
自定义推送目标
中,选择您为自定义推送服务器设置的目标。
单击
保存
。
使用目标 URL 配置自定义推送后,设备应用程序就可以注册其推送标识,该标识特定于具有移动服务的本地推送供应商,并且移动服务会透明地存储标识。
稍后,后端调用 移动服务 会向这些设备发送推送通知。SAP Mobile Services 根据用户名、应用程序标识和/或 APNS 和 FCM 等其他信息查找注册的推送标识,然后将推送标识和推送消息发送到自定义推送提供者。
在此流程中,移动服务尝试不修改推送消息,并将消息传递到自定义推送提供者进行解析和处理。
浏览器通知
为启用客户端应用程序以接收浏览器通知,启用 W3C 通知。W3C 为 Google Chrome、Mozilla Firefox 以及 Microsoft Edge 浏览器启用推送通知服务。
在 SAP 移动服务主控室中,选择
移动应用程序
。
选择应用程序,然后选择
已分配功能
下的
移动推送通知
(或先进行添加);对于 SAP Mobile Cards,选择
功能 > 推送通知
。
在
W3C
下,选择
为 Google Chrome、Mozilla Firefox 以及 Microsoft Edge 浏览器启用 W3C 推送 API
。
禁用 W3C 通知时,会移除之前所有的浏览器订阅,且无法恢复。
保存更改。
W3C 推送 API 和 移动服务
移动服务支持向使用推送 API 的 Google Chrome、Mozilla Firefox 和 Microsoft Edge(仅适用于基于 Chrome 且自 2020 年 1 月起可用的版本)浏览器发送推送通知。
首先创建应用程序或使用现有应用程序,并确保已启用移动推送通知功能。要启用移动推送通知,请参阅
浏览器通知
。然后,应创建服务密钥,并为其分配角色
push_single
。稍后,使用该密钥向用户发送推送通知。
以下部分提供有关维修工的概念和客户端代码的实际订阅调用的信息。要了解更多,请参阅
推送 API
。
检索
applicationServerKey
。
JavaScript 代码需要
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 属性名称配置后,必须更新或删除所有现有设备推送注册。
不支持代表注册或更新注册,因为 SAP Mobile Services 在用户上下文中调用 XSUAA 服务来检索 SAML 属性值
检索可用用户属性
您可以通过调用用户信息服务来检索可用用户属性。
打开 SAP Mobile Services 主控室并导航到移动应用程序配置。
从信息标签中检索应用程序标识。
从API 标签中检索服务器 URL。
调用用户信息服务
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
您可以使用任意具有单个列表项目的属性,例如 email、family_name、given_name 或 SAPUID
禁用 SAML 属性作为备选用户名
在推送用户名中禁用使用 SAML 属性作为用户名。
SAML 属性值不会从现有设备注册中删除,但不用于检索设备注册。
发送推送通知
对所选应用程序管理推送通知。
此功能使用现有推送通知机制将消息发送给接收者。您可以发送本机推送通知。您必须分配有空间的开发人员或管理员角色才能发送推送通知(发送推送通知按钮灰显,表示需要将该角色添加到您的参数文件中)。
注意,对于某些推送提供者,如果您在移动设置交换中删除自动注册的用户注册,还必须从移动推送通知 > 推送通知中手动删除设备注册。这是因为提供者未提供在推送中进行自动删除所需的信息。对于这些提供者而言,必须执行手动删除:百度、自定义和 W3C。
在 SAP 移动服务主控室中,选择移动应用程序 > 本机/MDK 或 SAP Mobile Cards。
选择应用程序,然后选择已分配功能下的移动推送通知(或先进行添加);对于 SAP Mobile Cards,选择功能 > 推送通知。
选择推送注册查看符合推送通知资格的已注册用户的列表。
您可以单击“定制表列”图标
action-settings
更改显示的列。
注册用户默认列
为订户启用推送 (SaaS)
对于在单一应用主控室 (SaaS) 中管理的本机/MDK 应用,订户管理员可以启用或禁用发送给应用订户的推送通知。关闭后,其他推送配置(例如全局推送或推送提供者)不可用。
在 SAP 移动服务主控室中,选择移动应用程序 > 本机/MDK 或 SAP Mobile Cards。
选择应用程序,然后选择已分配功能下的移动推送通知(或先进行添加);对于 SAP Mobile Cards,选择功能 > 推送通知。
确保已选择配置标签。
选择启用移动推送以使订户能够接收在推送注册中创建的推送通知(请参阅发送推送通知)。移动推送通知会发送给订户。
选择禁用推送通知以关闭发送推送通知。在推送注册中创建的移动推送通知不会发送给订户。
相关信息
定义连接性