新聞中心
概覽
小組件可以借助用戶的位置來顯示相關(guān)和有用的信息。因為小組件的擴展不會持續(xù)運行,所以在其中使用定位服務(wù)需要完成一些額外步驟。

在小組件中啟用定位服務(wù)
要在小組件中使用定位服務(wù):
-
將
NSWidgetWantsLocation鍵添加到小組件擴展的Info.plist文件中。 -
將相關(guān)用途字符串添加到包含這個小組件的 App 的
Info.plist文件中。
重要信息
你的 App 必須請求用戶的授權(quán),小組件才能接收位置信息。有關(guān)更多信息,請參閱“請求定位服務(wù)授權(quán)”。
如“選擇要請求的定位服務(wù)授權(quán)”中所述,盡量請求“使用時”(When In Use) 授權(quán)。
從小組件訪問位置信息
當(dāng)用戶添加使用位置的小組件時,系統(tǒng)會詢問他們是否想要將 App 的位置授權(quán)擴展到這個小組件。使用 authorizedForWidgetUpdates 來確定這個小組件是否符合接收位置更新的條件。用戶可以隨時在“設(shè)置”>“隱私”>“定位服務(wù)”中更改其批準(zhǔn)選擇。
用戶批準(zhǔn)小組件使用位置信息后,系統(tǒng)會在小組件顯示后的短時間內(nèi)將其視為“正在使用”。如果系統(tǒng)在此使用期間刷新該小組件的視圖,則該小組件可以訪問位置信息。例如,在用戶將小組件添加到主屏幕并批準(zhǔn)擴展 App 的位置授權(quán)后,小組件立即可以獲得用戶的位置。
當(dāng)小組件在一段時間內(nèi)不顯示時,系統(tǒng)將不再將其視為正在使用,并停止提供位置更新。當(dāng) WidgetKit 重新加載小組件的視圖時,如果 authorizedForWidgetUpdates 為 true,但小組件未獲得位置更新,這是指示用戶的位置當(dāng)前不可用的一個不錯的做法。注意,這不同于 authorizedForWidgetUpdates 為 false 的情況,后者表示用戶尚未批準(zhǔn)小組件接收位置更新。
在真實情景中測試小組件
由于小組件基于時間線進行更新,以及小組件正在使用狀態(tài)的變化,因此在真實情景中測試使用位置的小組件非常重要。例如,創(chuàng)建以下測試情景:
-
添加小組件時擴展 App 的位置授權(quán)。
-
添加小組件時不擴展 App 的位置授權(quán)。
-
添加小組件后,在“設(shè)置”>“隱私”>“定位服務(wù)”中更改 App 的授權(quán)。
-
添加小組件后,在“設(shè)置”>“隱私”>“定位服務(wù)”中更改對小組件位置授權(quán)的批準(zhǔn)。
-
將小組件添加到經(jīng)常查看和不經(jīng)常查看的主屏幕頁面。
因為小組件每天接收的刷新次數(shù)有限,所以需要持續(xù)多日測試小組件。
使用多個小組件擴展來隔離定位服務(wù)的使用
如果你的 App 提供了多個小組件,并且只有部分小組件使用定位服務(wù),請將小組件分成多個擴展。將 NSWidgetWantsLocation 添加到包含使用位置的小組件的擴展中。這樣可讓系統(tǒng)僅對使用位置信息的小組件提示用戶,并使其與用戶的情境更加相關(guān)。
有關(guān)更多信息,請參閱“創(chuàng)建小組件擴展”中的“在你的 App 擴展中聲明多個小組件”部分。
分享題目:創(chuàng)新互聯(lián)IOS教程:訪問小組件中的位置信息
本文地址:http://m.fisionsoft.com.cn/article/codiggi.html


咨詢
建站咨詢
