[英]Using iOS 11 NEHotspotConfiguration capability on a Simulated Device and not just a physical device
我正在使用iOS 11中的NEHotspotConfiguration類連接到已知的wifi網絡。 這個React Native應用程序在物理設備上可以正常工作,並且我可以使用iOS 11上的NEHotspotConfiguration類以編程方式連接到網絡。但是,當我嘗試在模擬器中構建/運行它時,出現以下錯誤,該錯誤可以防止我什至沒有啟動該應用程序:
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_NEHotspotConfiguration", referenced from:
objc-class-ref in IOSWifiManager.o
"_OBJC_CLASS_$_NEHotspotConfigurationManager", referenced from:
objc-class-ref in IOSWifiManager.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
即使我無法使用該功能來更改模擬器中的wifi,是否有辦法繼續使用模擬器來測試我的應用程序的其余部分並啟用此功能?
可能還有其他選擇,但是我在一篇中篇文章的評論中找到了以下潛在答案,這使我找到了一個解決方案:
https://medium.com/@ercp42/i-got-this-error-ceacd08191b3
“對於遇到相同問題的任何人,我都通過將NetworkExtension導入及其與#if!TARGET_IPHONE_SIMULATOR一起使用的代碼進行包裝來解決此問題,從而解決了該問題。”
但是,至少對我而言,這還不止於此。
我確實使用#if TARGET_OS_IPHONE && !TARGET_OS_SIMULATOR
將@implementation IOSWifiManager
實現包裝在IOSWifiManager.m文件中,並留下了一個簡單得多的else語句在模擬器上構建它:
#else
@implementation IOSWifiManager
RCT_EXPORT_MODULE();
@end
#endif
我還進入了構建設置,並在“鏈接其他鏈接器標志”下將“ iOS模擬器”和“任何體系結構”的值更改為以下值:
"OTHER_LDFLAGS[arch=*]" = (
"$(inherited)",
"-ObjC",
"-lc++",
"-framework",
NetworkExtension,
);
"OTHER_LDFLAGS[sdk=iphonesimulator*]" = (
"$(inherited)",
"-ObjC",
"-lc++",
);
最后,我將網絡擴展框架從必需更改為可選,並確保我們支持正確的構建體系結構。 希望能對遇到同樣問題的任何人有所幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.