2016-02-04 68 views
0

在應用程序中,我們有像iOS本地提醒應用程序這樣的機制,當用戶在某個區域中輸入或退出時發射通知。CLCircularRegion和喚醒應用程序

但兩個裝置表現不同(5分5秒)在同一時間。所有設備都啓用通知,並允許使用位置。

兩個設備有一些「旅行」,並在該路線創建了10分。第一臺設備(5)完成時只收到6個通知,(5s)沒有收到任何通知。

但我的問題是,我怎麼能知道什麼時候我的應用程序是重啓背景或繼續工作。因爲,所有登錄應用程序都會重定向到一個文件中,然後下載容器並分析旅行時在應用程序中發生的事情。

我注意到,在相同的時間重新啓動應用程序時,設備進入到區域和文件中解僱我的日誌標記,但通知沒有收到。這是happended當應用程序試圖從Web服務的一些信息在didFinishLaunchingWithOptions

也許這就是問題。如何知道區分重啓應用程序或繼續工作。謝謝。

回答

1

你在didFinishLaunchingWithOptions類似檢查UIApplicationLaunchOptionsLocationKey(對不起,斯威夫特是我現在有):

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    if launchOptions?[UIApplicationLaunchOptionsLocationKey] != nil { 
     // app was launched in response to incoming location event 
    } 
} 

此外,如果你還沒有這樣做,你可能需要以不同的方式建立通知,如果應用程序是背景:

// Show an alert if application is active 
    if UIApplication.sharedApplication().applicationState == .Active { 
     if let message = notefromRegionIdentifier(region.identifier) { 
      if let viewController = window?.rootViewController {      
       showSimpleAlertWithTitle(nil, message: message, viewController: viewController) 
      } 
     } 
    } 
    else { 
     // Otherwise present a local notification: 
     let notification = UILocalNotification() 
     notification.alertBody = notefromRegionIdentifier(region.identifier) 
     notification.soundName = "Default"; 
     UIApplication.sharedApplication().presentLocalNotificationNow(notification) 
    } 
相關問題