簡體   English   中英

flutter 插件開發和 iOS 本機代碼:避免應用啟動時的權限請求?

[英]flutter plugin development and iOS native code: avoid permission request on app launch?

大家好,提前感謝您的時間和奉獻精神。

我正在開發一個需要訪問麥克風的 flutter 插件。 我已經能夠這樣做,但是當我測試插件(使用示例或使用新的或現有的應用程序)時,我遇到了有關麥克風權限的以下問題:

初始上下文:

插件本身不請求權限。 這是更大發展的一部分,其想法是該應用程序將在類似屏幕的向導上請求權限。 插件的作用是檢查是否授予了授予者權限(在本例中為麥克風)

場景 1:Info.plist 上沒有NSMicrophoneUsageDescription

在這種情況下,在真實設備上運行應用程序(總是在調試上下文中)將自動崩潰。 在這一點上,我沒有調用任何可能嘗試使用麥克風的方法。 事實上,如果我使用新應用程序只是添加依賴項而不導入任何內容,則會導致崩潰:

此應用程序已崩潰,因為它試圖在沒有使用說明的情況下訪問隱私敏感數據。 應用程序的 Info.plist 必須包含一個 NSMicrophoneUsageDescription 鍵和一個字符串值,向用戶解釋應用程序如何使用這些數據。

場景 2: NSMicrophoneUsageDescription存在於 Info.plist

這修復了崩潰,但也會導致應用程序在啟動后立即請求麥克風權限。 這很好,但它與向導屏幕的要求相沖突。

由於我不是 Flutter 插件開發方面的專家,因此這可能是正常流程,但我會覺得這很奇怪。 如果是這種情況,有沒有辦法避免應用程序請求權限,以便我可以按需進行?

再次感謝

編輯1:

我被要求顯示代碼,但只是將庫添加為依賴項會觸發此操作。

這可能是調試的事情嗎?

編輯2:

問題是插件根目錄上的 singleton 模式初始化 iOS 本機代碼。 謝謝大家

我發現了問題所在:代碼使用 singleton 作為入口點,並且正在實例化 AudioEngine。 我對這個不好。 感謝大家。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM