簡體   English   中英

接收時執行iOS推送通知代碼

[英]iOS Push Notification code execution on receive

我正在為iOS開發消息傳遞應用程序。

我將用戶的電話號碼保留在服務器上,但我的聯系人名稱不保留在后端。

當用戶從服務器收到推送通知時,服務器會在通知有效負載中向用戶發送電話號碼和消息內容。 我實現了application:didReceiveRemoteNotification:fetchCompletionHandler方法來顯示本地通知。 我在本地數據庫中查找phoneContactName:phoneNumber對,並以以下格式顯示本地通知:%phoneContactName%:%messageContent%

但是,障礙在於,我現在不在應用程序未運行時不執行該代碼。 我試圖實現application:didFinishLaunchingWithOptions並檢查那里

NSDictionary *userInfo = [launchOptions valueForKey:UIApplicationLaunchOptionsRemoteNotificationKey];

但是不會調用此代碼。

因此,要解決該問題,我想問您應該使用哪種架構模型。 我應該在服務器端保留聯系人姓名以從服務器端發送帶有聯系人姓名的notification.alert(到目前為止,我的服務器尚不知道聯系人電話號碼的名稱),還是在應用程序執行時有任何方法可以執行代碼沒有運行?

PS另外,我會在收到通知時在客戶端計算徽章編號。 因此,如果可能的話,代碼執行解決方案會更好。

謝謝

我認為您的架構是正確的。 您的問題取決於該應用程序當前所處的狀態之一。

如果您的應用程序已終止或從未打開過,則將執行application:didFinishLaunchingWithOptions的上述代碼,但是,如果您的應用程序處於后台或掛起狀態,則將調用以下方法。

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

因此,您還需要在應用程序委托中實現此功能。

我希望這有幫助

您必須管理應用有效或無效的條件,例如

UIApplicationState state = [application applicationState];
if (state == UIApplicationStateActive) {

    // Below Code Shows Message While Your Application is in Active State



    else { 
//for app recieving notification in background and tap on notification
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM