Expo iOS深度链接失效问题(疑似与Google登录配置相关)
Expo iOS深度链接失效问题(疑似与Google登录配置相关)
嗨,我来帮你捋捋这个问题~
你遇到的情况大概率是URL Scheme配置冲突导致的。iOS的CFBundleURLTypes字段是用来声明App能响应哪些URL Scheme的,它是一个数组结构,每一个字典项对应一组可处理的Scheme。
你现在的配置里只加了Google登录需要的com.googleusercontent.apps.[secret]这个Scheme,相当于没把深度链接的Scheme也包含进来。当系统收到深度链接请求时,发现你的App没有声明对应的Scheme,自然就不会触发深度链接逻辑——而你删掉Google登录的配置后,原来的深度链接Scheme配置(可能是Expo默认添加或你之前配置的)又生效了,所以深度链接就正常了。
那怎么解决呢?很简单,把深度链接的URL Scheme也添加到CFBundleURLTypes数组里,和Google的配置并列就行。举个例子,假设你的深度链接Scheme是myapp://,修改后的info.plist应该是这样的:
... <key>GIDClientID</key> <string>[secret].apps.googleusercontent.com</string> <key>CFBundleURLTypes</key> <array> <!-- Google登录的Scheme配置 --> <dict> <key>CFBundleURLSchemes</key> <array> <string>com.googleusercontent.apps.[secret]</string> </array> </dict> <!-- 深度链接的Scheme配置 --> <dict> <key>CFBundleURLSchemes</key> <array> <string>myapp</string> <!-- 这里填你的深度链接Scheme,不用带:// --> </array> </dict> </array> </dict> </plist>
还要注意两个小细节:
- 深度链接的Scheme只需要填前缀(比如
myapp,不用写完整的myapp://) - 如果你的深度链接是通过Expo的
app.json里expo.scheme配置的,要确保这里的Scheme和app.json里的完全一致
这样配置后,你的App就能同时响应Google登录的回调URL和你的深度链接了~
备注:内容来源于stack exchange,提问作者n8o
相关产品推荐
相关产品推荐

