我的 APNS 消息运行良好。但是,我想更改已发送消息的标题。目前标题始终是我的应用程序的名称。我看到本机 iOS“邮件”应用程序的通知将“发件人”地址作为消息的标题,并且电子邮件主题以粗体显示作为通知的子标题。我想为我的应用程序的通知重现此内容,但看不到如何执行此操作。JSON 有效负载似乎只有一个“警报”键,而没有提及“标题”键。有没有可能实现我想要的?
问问题
5238 次
3 回答
5
无法更改 APNS 消息的标题。
于 2012-08-06T12:51:00.377 回答
5
我只是偶然发现了这个老问题,只是想补充一下,现在可以为通知指定标题和正文(我认为从 iOS 8 开始)。
您的推送有效负载需要如下所示:
{
"aps": {
"alert": {
"title": "New Message from Boss",
"body": "Can you complete the new feature until tomorrow, please?!"
}
}
}
您可以在 Apple 的Local and Remove Notification Programming Guide中找到详细规范。
于 2018-01-26T14:34:18.260 回答
0
有可能的!
Message.php中的ApnsPHP_Message类需要修改一下:
// 标题的新变量
protected $_titleText;
// 为标题创建 setter&getter 方法
public function setTitleText($sText)
{
$this->_titleText = $sText;
}
public function getTitleText()
{
return $this->_titleText;
}
// 修改 _getPayload 方法
protected function _getPayload()
{
$aPayload[self::APPLE_RESERVED_NAMESPACE] = array();
if (isset($this->_sText)) {
if(isset($this->_titleText)){
$aPayload[self::APPLE_RESERVED_NAMESPACE]['alert']['title'] = (string)$this->_titleText;
$aPayload[self::APPLE_RESERVED_NAMESPACE]['alert']['body'] = (string)$this->_sText;
}else{
$aPayload[self::APPLE_RESERVED_NAMESPACE]['alert'] = (string)$this->_sText;
}
}
if (isset($this->_nBadge) && $this->_nBadge > 0) {
$aPayload[self::APPLE_RESERVED_NAMESPACE]['badge'] = (int)$this->_nBadge;
}
if (isset($this->_sSound)) {
$aPayload[self::APPLE_RESERVED_NAMESPACE]['sound'] = (string)$this->_sSound;
}
if (is_array($this->_aCustomProperties)) {
foreach($this->_aCustomProperties as $sPropertyName => $mPropertyValue) {
$aPayload[$sPropertyName] = $mPropertyValue;
}
}
return $aPayload;
}
通过此修改,您可以设置推送消息标题:
$message->setTitleText("This is title");
于 2017-02-15T09:10:01.440 回答