2017-10-05 65 views
0

正如我們所知,此功能在推送通知標題準備就緒時顯示。更改推送通知內容以編程方式

-(void)userNotificationCenter:(UNUserNotificationCenter*)center 
willPresentNotification:(UNNotification*)notification 
withCompletionHandler:(void (^)(UNNotificationPresentationOptions 
options))completionHandler{ 


} 

在這個函數中有Class(UNNotification)的通知,其中包含將在橫幅上顯示的信息。 現在的問題是,我們可以在應用程序內更改推送通知的內容嗎? 我可以用這種方式存儲所有的內容。

NSString *title=notification.request.content.title; 
NSString *subTitle=notification.request.content.subTitle; 

等等。 但問題是這些屬性(title,subTite)只是只讀的。 有沒有辦法改變這個完成處理程序或其他方法內的內容?

+1

爲什麼你不能從後端更改推送通知的有效載荷。 APS將顯示橫幅,但您可以在有效載荷字典中添加更多信息 –

+0

是的,它是一種解決方案,但我現在無法訪問後端。由於某些原因,我需要在應用程序中執行此操作。 –

回答

4

創建NotificationService擴展名。當您在有效負載的aps內發送可變內容標誌爲1時,iOS系統將啓動您的擴展併爲您提供更改通知內容的機會。即使你的應用程序處於死亡狀態,這也可以工作。唯一的缺點是,這僅適用於iOS 10及更高版本。

+1

舊的iOS版本的後備將是安排一個本地推送通知 - 這種行爲對我們來說很好:) – Lepidopteron

+2

@Lepidopteron:我想通過調度本地通知,你的意思是發送一個無聲推送,然後安排本地通知。但是,在這種情況下,如果用戶終止了應用程序,則無法推送沉默推送。 –

+0

它確實是一個很好的靈魂,但我現在沒有權限後端。意味着沒有人可以立即從後端更新新的P12文件(擴展文件)。 –