前言
Android端的React Native很清楚,在运行时可以修改服务器主机,在开发模式下摇晃设备,弹出调试菜单,就可以修改服务器主机。不用重新包装也很方便。
不知道为什么,iOS环境缺没有提供相关功能。于是这个工具就出来了:react-native-debug-server-host
如何使用
使用方式简单的不能再简单了,只要把DebugServerHost
整个目录引用到xcode工程中,恭喜你,你已经安装完毕。
运行一下,看你的调试菜单是不是多了一项:
修改server host
可以通过手工输入,也就是直接在文本框中手工打字,原则上不建议这么做,太虐心了。因为提供了更方便的修改途径:扫描二维码。
具体操作步骤:
将服务器地址通过二维码生成工具,生成二维码。
点击
Input URL With QRScan
,打开扫一扫工具,扫描二维码。点击
OK
,会自动执行reload
动作。
很方便是吧。集成和使用说完了,下面说下具体实现。只关心使用的朋友就不用继续往下看了。
该库中使用了二维码扫描库QRCodeReaderViewController
,如果你的工程中也使用了这个库,保留工程中的,删除库中的源文件即可。
实现原理
调试菜单的实现在RCTDevMenu
这个类中,每次打开调试菜单时,都会调用menuItems
这个方法,它是用来创建菜单选项的,所以我们要添加自己的调试菜单,只需要在末尾追加就可以了。
考虑到react native更新频率较快,并且直接修改源码的方式不太科学,因此创建RCTDevMenu
的分类,添加自定义菜单,然后使用swizzling技术替换原有方法。swizzling在react native工具类RCTUtils
中已经实现。
可以看到,我们添加了一项菜单Debug server host
,处理hander发送了一个通知,用来告知处理类打开UI面板,让用户设置server host。
到这里,已经实现了调试菜单,并让用户修改server host选项。下一步,就要告知RCTBridge
新的server host,因为加载的动作是RCTBridge
执行的。
RCTBridge
有个RCTBridgeDelegate
,用来告知server host是哪个,所以只要实现该协议,并指定RCTBridge
的具体delegate即可。
核心实现基本就差不多了,剩下没什么好说的,有兴趣直接看源码吧。
如果有帮助到你就给颗星吧。
1.《devmenu怎么用?总结很全面速看!React-Native动态修改server host》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《devmenu怎么用?总结很全面速看!React-Native动态修改server host》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/gl/3012922.html