IOS畫外音功能隨捆綁包標識符而變化 [英] iOS VoiceOver functionality changes with Bundle Identifier
問題描述
我遇到了畫外音不支持編碼的可訪問性值(標簽/提示/ECT)的問題。我已經能夠通過更改捆綁包標識符來復制該問題。我最初的捆綁識別器的所有畫外音功能都有問題。如果我在捆綁包標識的末尾添加任何東西,刪除iPhone上的應用程序,清理項目,強制關閉Xcode,單擊項目,讓它構建,然后安裝問題就消失了。如果我重命名回原來的捆綁包標識,刪除iPhone上的應用程序,強制關閉Xcode,點擊項目,讓它構建,然后安裝問題返回。我一整天都在嘗試這個過程,試圖隔離這個問題。包括在強制關閉Xcode后刪除派生數據,但它似乎既不會影響具有原始捆綁包標識符的應用程序,也不會影響新的捆綁包標識符。
雖然這個問題會影響整個應用程序,但它在UITabBarController上非常明顯。帶有原始捆綁包標識的應用程序上的畫外音在觸摸選項卡欄項目時會顯示以下內容
"Home Tab Actions Available" or "Home Tab swipe up or down to select a custom action then double tap to activate".
如果我滑動畫外音顯示標簽(";Home";),則圖標名稱如果存在(恰好是";Home";圖標),則";激活Default";。如果不存在圖標名稱,則在標簽和激活默認圖標之間沒有畫外音。
帶有新捆綁識別符的應用程序上的畫外音在觸摸選項卡欄項目時會顯示以下內容。根據Apple的UITabBar文檔(uIKit/uitabbar),我認為這是正確的方式。
"Selected Home Tab 1 of 3"
Git中唯一的區別是捆綁包標識符。
myname@name-Mac-mini dretauth (appSignIn) $ git diff
diff --git a/dretauth.xcodeproj/project.pbxproj b/dretauth.xcodeproj/project.pbxproj
index 5a02b2a..ab01473 100644
--- a/dretauth.xcodeproj/project.pbxproj
+++ b/dretauth.xcodeproj/project.pbxproj
@@ -2325,7 +2325,7 @@
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.33;
- PRODUCT_BUNDLE_IDENTIFIER = "com.redacted.dretauth";
+ PRODUCT_BUNDLE_IDENTIFIER = "com.redacted.dretauth.ctest";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
@@ -2349,7 +2349,7 @@
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.33;
- PRODUCT_BUNDLE_IDENTIFIER = "com.redacted.dretauth";
+ PRODUCT_BUNDLE_IDENTIFIER = "com.redacted.dretauth.ctest";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
myname@name-Mac-mini dretauth (appSignIn) $
如果我搜索整個項目,唯一具有原始捆綁包ID的項是Build設置、Info.plist、Apple-app-Site-Association(保存在項目中,但僅在服務器端使用)和用于Firebase通知/Crashlytics的GoogleService-Info。
在這一點上,我不確定如何使用原始的捆綁包標識符將正確的功能添加到我的應用程序中。應用程序正在生產中,因此更改標識符是不可能的。謝謝。推薦答案
我花了幾天時間把頭都押在這上面了。已購買新設備,并且在未傳輸我的應用或設置的情況下問題仍然存在。
我從蘋果框架工程師那里得到了答復,盡管他們說屏幕識別設置是在系統級別保存的。我的猜測是,屏幕識別保存在iCloud或其他同步位置,因為設置在新設備安裝上保持不變。以下是蘋果公司的回應,以防有人遇到這個問題。 https://developer.apple.com/forums/thread/698009
It sounds to me like you may have inadvertently enabled Screen Recognition for your app. We store this setting by bundle identifier on the system. You can use the rotor (rotate 2 fingers on the screen like you are rotating a dial) to get to Screen Recognition, and then swipe up or down to toggle it on or off. This feature uses machine learning models to attempt to make your app accessible rather than relying on the view hierarchy, which would be why the properties you are setting aren't being respected. If you toggle this off, it'll go back to reading from the view hierarchy.
此設置很難打開或關閉,只有在打開VoiceOver時才在應用程序中可用。盡管它是一個輔助功能,但它并沒有宣布如何調整該功能,只有一個表盤在選擇一個設置后很快就會消失。沒有用戶應該向上或向下滑動的跡象,向上或向下滑動必須在你拿起用來查找表盤上設置的兩個手指后一秒鐘內完成。用戶的手指可能因為轉動表盤而處于獎勵位置,因此可能需要幾次嘗試才能更改設置。無論如何,我希望這能為某些人節省幾天的調試時間。
這篇關于IOS畫外音功能隨捆綁包標識符而變化的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持IT屋!