iOS 8 基於定位的本地通知

2021-06-26 19:04:13 字數 3156 閱讀 7583

ios 8在推送通知的方式上做了些許改動,特別是對於推送的認證和本地通知更是改得不少。本地通知可以通過乙個定時器觸發,並且比較新鮮的功能就是通過定位資訊來觸發本地通知。

在ios 7上,根據使用者的地理資訊在特定的區域給其傳送通知理論上是可以實現的,但是離真的實現相去甚遠。而這些功能在ios 8裡面都開放出來了,而基於定位的通知則是首當其衝要支援的內容。

請求認證

因為這個應用要申請定位和通知,所以你需要從使用者的那裡獲得相關許可權。使用者通知可以是對話方塊、音效、圖示角標,總之通知會打斷使用者的當前操作,但不會在前台顯示出通知應用的介面。這些通知可以通過遠端或者本地事件觸發(或者是時間和空間上的事件)。而請求獲取使用者授權的時候你就需要告知使用者你需要使用哪一種通知,並將其註冊。下面僅僅是乙個有關對話方塊的請求:

1

2

3

4

5

// ask for permission for notifications

let notificationsettings = uiusernotificationsettings(fortypes: uiusernotificationtype.alert, categories: nil)

呈現給使用者的效果如下:

如果你沒有獲得授權,卻要企圖使用定位通知的話,你會在控制台得到如下錯誤:

申請定位的授權會稍微複雜一些,之前在這篇文章深入解析過。你需要建立乙個cllocationmanager(),它的宣告週期與檢視控制器一樣(也就相當於屬性值)。

1

let locationmanager = cllocationmanager()

然後請求許可權:

1

2

3

4

5

// ask for permission for location

locationmanager.delegate = self

locationmanager.requestwheninuseauthorization()

有趣的是,在這裡你無需請求在後台使用位置資訊的許可權就能實現定位通知。這是因為系統中的corelocation關心的只是地理圍欄的資訊(譯者按:也就是說這裡判斷使用者的位置依靠的不是定位而是使用地理圍欄技術,國內的玩家就默淚吧),而在使用者掏出手機把你的應用拿來用的時候離目的位置還遠著呢。

如果有**不對的話這個地方是一定會有錯誤提示的,所以好好檢查一下吧。

建立通知

定位通知和臨時通知並無二樣,其實都屬於本地通知。因此都以uilocalnotifiction的例項來建立:

1

2

3

let notification = uilocalnotification()

notification.alertbody ="you're nearly there!"

為了將你的通知型別指定為定位通知你需要將為region屬性賦上乙個clregion物件,clregion有clcircularegion和clbeaconregion兩個實體類子類,也就是說,你用兩種方式來指定你的通知的觸發範圍,一種是根據全球的絕對位置資訊,另一種則是根據乙個給定的ibeacon來介定。

下面的**指定了乙個以指定地點annotation的座標coordinate為圓心,半徑radius為50公尺的圓形區域:

1

2

3

notification.region = clcircularregion(center: annotation!.coordinate, radius: 50, identifier:"destination")

notification.regiontriggersonce =true

regiontriggersonce屬性限定的是在通知觸發之後是否只通知一次即停止,這裡是true表示只通知一次,而如果是false則表示使用者在每次經過指定範圍的邊界時都會收到通知。

1

所以完成之後效果應該是這樣的:

通知響應1

2

3

4

5

6

7

8

9

10

11

println("\(notification)")

ifnotification.region != nil

}

無論你的應用當前在不在前台這個方法都會被呼叫——不過要注意的是如果你的應用此時處於前台,那系統不會顯示任何ui介面——這是可以由你決定的。

1

2

3

4

5

6

7

8

9

10

11

12

13

if

println("it's a location event")

}

returntrue

}

iOS本地通知

rt 本地通知 本地通知是uilocalnotification的例項,主要有三類屬性 對本地通知的數量限制,ios最多允許最近本地通知數量是64個,超過限制的本地通知將被ios忽略。如果就寫個簡單的定時提醒,是很簡單的,比如這樣 示例寫的很簡單,啟動應用後,就發出乙個定時通知,10秒後啟動。這時按...

iOS本地通知

本地通知由本應用負責呼叫,只能從當前裝置上得ios發出。本地通知適用於基於時間的程式,包括簡單的日曆程式或者to do列表型別的應用程式。本地通知是乙個uilocalnotification,它有如下屬性 每個應用程式最多只能傳送64個本地通知。如果系統發出通知時,應用程式處於前台執行,系統將會觸發...

ios本地通知

什麼時候需要推送跳轉 viewcontroller.m localnotification created by hq on 16 5 12.import viewcontroller.h inte ce viewcontroller ibaction sendnoty uibutton sende...