2015-04-16 47 views
1

我開發了一個小型的基於iBeacon的應用程序,當應用程序檢測到我們的一個iBeacons調用Web服務來獲取數據集並向用戶發送本地通知時。所有這些工作正常。iBeacons和本地通知

我現在提出了這樣的想法,即這些本地通知可以在短時間間隔內隨新內容而變化。問題是,如果用戶沒有離開iBeacon的區域並重新進入,應用程序將不會「喚醒」,並且用戶不會收到新的更新通知。

我不知道這是否可以通過某種方式解決,或者實際上製作類似的方法不應與iBeacons的技術相關。

我真的迷路了,不知道有沒有人會知道如何提高它。

+0

背景didRangeBeacon不會打電話只監測將work.didEnterRegion和didExitRegion將稱爲背景。 –

回答

1

爲了做到這一點,您需要讓應用在後臺運行,而信標在附近。這將允許您定期檢查與信標相關的更新內容,然後顯示通知的情況下有效:

  1. 當一盞明燈首次出現,並沒有與該信標相關聯的消息。
  2. 在信標仍然可見的時間內,與上述信標相關的消息發生變化。

至於你提到的第二個項目是一個問題,因爲你需要一種方法來不斷地檢查,看是否有更新儘管的iOS將在5秒標檢測內暫停您的應用內容的背景。

一些選項,其每一個具有缺點:

  1. 可以使用定製的硬件信標改變其每分鐘標識符左右(例如,次要追溯到和0之間來回和1)。這將允許您監視兩個區域,並在每分鐘內重新觸發信標在附近。下行:這需要建立一個自定義的燈塔。

  2. 您可以讓您的應用程序請求額外3分鐘的後臺運行時間,在此期間您可以檢查已更改的消息。下行:您只需三分鐘即可顯示更改的消息。

  3. 您可以在.plist中指定額外的背景模式,以便您可以繼續在後臺運行。缺點:除非您有充足的理由在後臺運行(例如,導航應用程序或音樂播放器應用程序),否則Apple不會批准您的應用程序在商店中分發。

  4. 您可以將推送通知發送給您應用程序每次更改消息時,都會在後臺喚醒應用程序,以便在信標位於附近時顯示更新的通知。下行:設置推送通知有點複雜,交付速度可能很慢,並且不能保證。

這裏閱讀一些這些選項的詳細信息:http://developer.radiusnetworks.com/2014/11/13/extending-background-ranging-on-ios.html

+0

非常感謝大衛,你的建議總是有幫助的。我已經實施了第二個選項。我認爲我應該調查推送通知,因爲其他兩個選項原則上不可行。 –

+0

這3分鐘內是否可以進行api呼叫? 我想讓我可以打電話給我的服務器,然後返回該iBeacon的名稱。 因此,而不是我的通知只是說「我找到了一個iBeacon」它可以是「我發現iBeacon number 10」? 可以做嗎? 此外,我在迅速做到這一點。 – LinkToThePast

+0

是的,這是可能的。 – davidgyoung

2

您可以安排本地通知在特定的時間內遞交:使用UILocalNotificationfireDatetimeZone屬性,然後使用scheduleLocalNotification代替的UIApplication的presentLocalNotificationNow方法。

考慮到這一點,您可以這樣做:在「enter」事件後,檢索幾條通知,以在特定時間段內向用戶顯示,並保留在區域中,並適當安排時間並讓iOS執行提供。

如果用戶在顯示所有通知之前退出區域,則可以使用cancelLocalNotificationcancelAllLocalNotifications方法取消剩餘的本地通知。

+0

它是一個好主意,但通知不是預定義的,所以我不能先前下載。 –