getUrlSchemes method

List<String> getUrlSchemes()

Gets the list of URL schemes currently in Info.plist.

Implementation

List<String> getUrlSchemes() {
  final plistFile = File(_infoPlistPath);

  if (!plistFile.existsSync()) {
    return [];
  }

  try {
    final content = plistFile.readAsStringSync();

    if (!content.contains('<key>CFBundleURLSchemes</key>')) {
      return [];
    }

    // Extract strings from CFBundleURLSchemes array
    final schemesPattern = RegExp(
      r'<key>CFBundleURLSchemes</key>\s*<array>([\s\S]*?)</array>',
      multiLine: true,
    );

    final match = schemesPattern.firstMatch(content);
    if (match == null) {
      return [];
    }

    final arrayContent = match.group(1) ?? '';
    final stringPattern = RegExp(r'<string>([^<]+)</string>');
    final stringMatches = stringPattern.allMatches(arrayContent);

    return stringMatches.map((m) => m.group(1)!).toList();
  } catch (_) {
    return [];
  }
}