2

我使用创建了一个应用程序,react-native ini projectName并添加了一个名为的本机模块包react-native-facebook-account-kit ,我需要更改 ios 文件夹中的 Info.plist 并添加应用程序 ID 和客户端令牌信息。正如facebook docs所说,我还创建了一个pod文件。它工作正常。然后我试图在世博会上做同样的事情。所以我使用这个 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#iosapp.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 中呢?

4

1 回答 1

0

您不需要设置自定义 URL 架构,因为 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')
});

希望能帮助到你。

于 2020-01-05T10:24:59.230 回答