Apple推送通知服务 - 更改通知消息的标题

时间:2012-08-05 20:28:40

标签: ios json push-notification apple-push-notifications

我的APNS消息运行良好。但是,我想更改已发送邮件的标题。目前,标题始终是我的应用程序的名称。我看到原生iOS' Mail'应用程序有' From'地址作为邮件的标题,并且电子邮件主题以粗体显示为通知的子标题。我想为我的应用通知重现这一点,但无法看到如何执行此操作。 JSON有效负载似乎有一个键,用于" alert"没有提及标题'键。是否有可能实现我想要的目标?

3 个答案:

答案 0 :(得分:5)

无法更改APNS消息的标题。

答案 1 :(得分:2)

我只是偶然发现了这个旧问题而只是想补充说明,现在可以指定通知的标题和正文(因为我认为是iOS 8)。

您的推送有效负载需要如下所示:

change

您可以在Apple的Local and Remove Notification Programming Guide找到详细的规格。

答案 2 :(得分:0)

有可能!

需要Message.php中的ApnsPHP_Message类来修改位:

//标题的新var

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");