2015-08-09 52 views
2

嗨,我正在開發帶有信標的應用程序,即使應用程序已關閉,我也需要繼續掃描信標。有沒有科爾多瓦插件,它能夠在後臺運行,請建議我的示例應用程序的教程即使應用程序已關閉,背景中的信標檢測

+0

你確定你需要的應用程序在後臺進行連續掃描信標,或將具有應用醒來後接近信標(例如,以示通知)就夠了嗎?前者要做得更加棘手(見下面的回答),而且也難以超越蘋果審查團隊。 – heypiotr

回答

0

允許在項目的plist文件 位置更新UIBackgroundModes。

選擇在左窗格中的項目,然後選擇能力和擴大背景模式列表,然後選擇位置更新選項:

enter image description here

+0

嗨感謝您的答覆,我的要求是,當我是個附近的任何燈塔我需要得到一個本地通知,當我點擊它的應用程序需要打開基於需要填充數據檢測的信標主要和次要值 – Eagle

0

背景模式只有一個部分答案。你需要有一個或兩個條目中的Info.plist:

enter image description here

然後在代碼中的某個地方,你需要問requestWhenInUseAuthorization或你的情況requestAlwaysAuthorization。然後你需要在位置經理代表處處理。我做它像這樣:

- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status { 
    if (status == kCLAuthorizationStatusAuthorizedWhenInUse) { 

     [self startMonitoringAllRegions]; 

     [self.locationManager startUpdatingLocation]; 
    } 
    else if (status == kCLAuthorizationStatusNotDetermined) { 
     [self.locationManager requestWhenInUseAuthorization]; 
    } 
} 

所以地方我所要求啓動監測的燈塔區域,然後在這個方法中我檢查我是否有權從用戶這樣做,如果不是我如果我正在開始更新用戶位置,請求是否(將顯示來自plist的字符串)。

希望,這將讓你去:d

+0

謝謝,你是否有工作代碼的信標監測,即使應用程序從應用程序切換器中刪除,並且如果有示例應用程序r的教程在那裏?...... – Eagle

+0

我的應用程序是「掃描」只有在使用時,但當我測試它的圖標顯示在鎖定屏幕上。這個想法是,你正在註冊區域監控和iOS會'喚醒'你的應用程序。但正如我說我只有監控的區域,當應用程序在使用:)至於從網上教程任何我想:) – sloik

+0

沒關係我無法掃描信標,你可以給我發教程 – Eagle

0

這可能是與本地iOS的代碼,但不與科爾多瓦。當你說「掃描」信標時,這通常意味着使用CLLocation測距API,它每秒提供所有可見信標的更新。爲了在後臺持續做到這一點,你需要:

  1. 在Xcode中的應用的.plist filke添加location作爲後臺模式@ hasan83建議。
  2. 啓動後臺線程以保持您的應用在後臺運行。
  3. 請求requestAlwaysAuthorization @sloik建議。

我寫了一個tutorial and reference app如何做到這一點。該教程提到這隻工作3分鐘,但與位置的背景模式,3分鐘限制消失。請注意,添加此背景模式可能會讓您的應用程序被批准用於AppStore更加困難。蘋果必須批准這種背景使用定位服務的原因。

您無法在Cordova上執行此操作的原因是JavaScript必須運行以收集測距API返回的信標數據。這在前臺工作,但不在後臺,因爲Cordova依靠前臺的WebView來執行JavaScript代碼。在後臺,您的自定義代碼無法運行。

+0

謝喜的鏈接您的回覆,我的要求是,當我是個附近的任何燈塔我需要得到一個本地通知,當我點擊它的應用程序需要打開基於需要填充數據 – Eagle

+0

明白了檢測的信標主要和次要值。雖然應該可以通過自定義本地插件(或通過增加現有信標插件)來增強Cordova的支持能力,但不幸的是,該功能目前尚不存在。 – davidgyoung

0

嘗試使用iBeacons的this plugin。似乎有一些插件可以讓應用程序在後臺運行,例如this one。我懷疑你會在同一個插件中找到這兩個函數。

相關問題