簡體   English   中英

使用推送通知啟動時應用程序崩潰

[英]App crash when launch with a push notification

我已經為我的應用程序集成了推送通知。 為了捕捉通知,我使用了這個委托。

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo在我的應用程序委托中。

所以當應用程序在后台運行時,如果通知來了,當我點擊它時,這個委托就會觸發。 如果應用程序即使在后台也沒有運行,如果點擊 ntification 然后它會觸發

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

到目前為止它運作良好。 然后我想在后台捕捉通知。 所以我發現

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler

這對它有用。

所以我只是將我以前的didReceive方法更改為這個新的didReceive方法。 現在我的問題是當應用程序通過推送通知啟動時(如果應用程序不在后台或前台運行,並且當出現時單擊通知)我的應用程序崩潰。 即使我無法調試和捕捉這種情況。

這兩個代表有什么區別。 當應用程序通過通知啟動時,我的第二個代表是否會觸發? 請幫我。

通常,當收到通知時,此方法會執行(當應用程序處於活動狀態時) - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

但是如果應用程序被系統關閉或殺死,那么單擊通知首先調用“didFinishLaunchingWithOptions”方法,我們必須檢查應用程序是從通知啟動還是重新啟動,我們可以使用此代碼調用“didReceiveRemoteNotification” ”的方法

UILocalNotification *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];

if (notification) {
    [self application:application didReceiveRemoteNotification:(NSDictionary*)notification];
}

暫無
暫無

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

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