如何在弹出的本机应用程序中配置Info.plist文件使用expo sdk

时间:2018-07-21 17:13:18

标签: ios react-native expo account-kit native-module

我使用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中?

1 个答案:

答案 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')
});

希望有帮助。