Apple Push Notification Service - 更改通知消息的标题

Posted

技术标签:

【中文标题】Apple Push Notification Service - 更改通知消息的标题【英文标题】:Apple Push Notification Service - change title of notification message 【发布时间】:2012-08-05 20:28:39 【问题描述】:

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

【问题讨论】:

我认为你不能那样做。在本机邮件应用程序中完成是因为它是由 Apple 制作的,正如您所说的那样......它是本机的。 --> ***.com/questions/6210196/… 无法回答 :) 抱歉 好的,谢谢大家的回复。 【参考方案1】:

我只是偶然发现了这个老问题,只是想补充一下,现在可以为通知指定标题和正文(我认为是从 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 中找到详细规格。

【讨论】:

【参考方案2】:

无法更改 APNS 消息的标题。

【讨论】:

【参考方案3】:

有可能!

Message.php中的ApnsPHP_Message类需要稍微修改一下:

// 标题的新变量

protected $_titleText;

//为title创建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");

【讨论】:

以上是关于Apple Push Notification Service - 更改通知消息的标题的主要内容,如果未能解决你的问题,请参考以下文章

Apple Push Notification - 无法回调 didRegisterForRemoteNotificationsWithDeviceToken

Send push notification on Apple (APNS) on c#.net

Apple Push Notification Service 发送重复通知

Apple Push Notification Service 用户响应

Apple Push Notification 与生产服务 URL 上的开发证书一起使用

Apple Push Notification 不适用于非开发的临时构建