2016-12-27 86 views
0

我正在向多個iOS設備發送通知。有沒有什麼方法可以知道用戶實際收到了通知,並且用戶點擊了通知?我們如何知道通知到達iOS設備?

+0

這可能會幫助你http://stackoverflow.com/questions/25830597/如何知道推送通知傳遞狀態 – PiyushRathi

+0

@PiyushRathi感謝您的回答,這隻有當用戶點擊通知時纔有效。 –

+0

只有當用戶點擊通知時,您的應用纔會被注意。 – KudoCC

回答

1

發送請求到服務器沒有辦法做到執行一些動作,由於APNS將只送出推送通知目標令牌。在那裏有一些驗證過程來報告令牌失效。

我想你應該實現自己的邏輯來做到這一點,所以當通知被竊聽,你會得到你的名爲回調: https://developer.apple.com/reference/uikit/uiapplicationdelegate/1623013-application 並調用後端(通知發送者)是用戶實際挖掘的通知。

希望澄清。

+0

有沒有什麼辦法知道用戶何時沒有點擊通知。 –

+0

我不確定是否有辦法檢測到這種情況,因爲通知將保留在通知面板中,直到您點擊它或清除所有這些 - 無法檢測到。 – christian

+0

當應用程序處於後臺或活動狀態時,我們可以檢測何時向用戶顯示通知。但是,當應用程序完全關閉時,無法檢測到它。 – christian

0

嘗試設置一些處理用戶單擊該通知的事件 - 在那裏你可以像有關此事件的

+0

感謝您的回答,這隻有在用戶點擊通知時纔有效。 –

+0

有什麼方法可以知道用戶何時未點擊通知。 –

+0

是的,你可以處理用戶點擊事件 - 但沒有通知接收事件 –

0

正如基督教解釋,您可以通過以下兩個步驟來開發自己的邏輯:

1)當用戶得到通知,推送通知的委託方法,對Objective-C的

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(nonnull NSDictionary *)userInfo 


和斯威夫特

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) 

變得活躍。在這種方法中,可以使用一些參數調用Web服務調用來識別通知中的消息。

** 2)**第一步完成後,用戶單擊通知讀取消息,然後您可以再次調用具有某些參數的另一個Web服務來識別用戶已閱讀消息。爲此,您可以在編寫Web服務的邏輯,對目標c:

-(void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo completionHandler:(void (^)())completionHandler 

而對於SWIFT:

func application(application: UIApplication, handleActionWithIdentifier identifier: String?, forRemoteNotification userInfo: [NSObject : AnyObject], completionHandler:() -> Void) 
相關問題