我使用react-native ini projectName
创建了一个应用,并添加了一个名为react-native-facebook-account-kit
的本地模块包
而且我需要更改ios文件夹中的Info.plist并添加应用程序ID和客户端令牌信息。我也创建了一个pod文件,如facebook文档所说。
工作正常。然后我试图在世博会上做完全一样的事情。
所以我用这个cli创建了一个新项目
create-react-native-app projectName
然后运行npm run eject
并选择第二个选项,它同时使用react-native和expo sdk。
因此,它成功创建了ios和android文件夹。
但是ios文件夹中没有Info.plist文件。搜索后,我找到了此文档。
https://docs.expo.io/versions/latest/workflow/configuration#ios
而且我像doc所说的那样在app.json
中添加了一些键和值。
{
"expo": {
"sdkVersion": "27.0.0",
"ios": {
"bundleIdentifier": "com.cecil.foxtail",
"infoPlist": {
"FacebookAppID": "myAppId",
"AccountKitClientToken": "myClientToken",
"CFBundleURLTypes": [
// ??? CONFUSED
]
}
},
"android": {
"package": "com.cecil.foxtail"
}
}
}
这是应用程序中原始的Info.plist,效果很好。
<key>FacebookAppID</key>
<string>{app-id}</string>
<key>AccountKitClientToken</key>
<string>{client-token}</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>ak{client-token}</string>
</array>
</dict>
</array>
那么如何将这些数组定义到app.json中?
答案 0 :(得分:0)
您不需要设置自定义网址架构,因为默认情况下expo会将其设置为您的 bundleIdentifier
“ bundleIdentifier”:“ com.cecil.foxtail”,
因此您可以通过调用类似这样的方法来从另一个应用程序中调用:-
let websiteUrl ="https://apps.apple.com/myappInstallationPage";
let SchemaUrl = 'com.cecil.foxtail://';
Linking.canOpenURL(SchemaUrl).then(supported => {
if (supported) {
console.log('accepted');
return Linking.openURL(SchemaUrl);
} else {
console.log('an error occurred');
}
}).catch(err => {
Linking.openURL(websiteUrl).catch(reason => console.log('Failed to open app website!'))
console.log('an error occurred')
});
希望有帮助。