4

我的 APNS 消息运行良好。但是,我想更改已发送消息的标题。目前标题始终是我的应用程序的名称。我看到本机 iOS“邮件”应用程序的通知将“发件人”地址作为消息的标题,并且电子邮件主题以粗体显示作为通知的子标题。我想为我的应用程序的通知重现此内容,但看不到如何执行此操作。JSON 有效负载似乎只有一个“警报”键,而没有提及“标题”键。有没有可能实现我想要的?

4

3 回答 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 回答