Apple 的 URL 方案映射列表 (Mac and/or iPhone)

List of URL Scheme Mappings for Apple (Mac and/or iPhone)

我正在尝试寻找更多关于与特定应用关联的自定义 URL 映射方案的信息。我检查了一些 SO 讨论,但未能得出结论。我有几个关于 URL 方案映射的问题,

  1. 有没有办法(比如某个命令或存储此信息的文件)获取 URL 方案的列表以及它们映射到给定 Apple iPhone 还是 Mac? (我猜答案是否定的 - 基于 但我想确认一下,因为这个答案很旧)。

  2. 应用程序上的 运行 "strings" 命令是找出与该应用程序关联的 URL 方案的唯一方法吗? (这是基于对这个答案的评论 - )。

  3. 是否有比 http://wiki.akosma.com/IPhone_URL_Schemes

  4. 更完整的 URL 方案列表

在 OS X 上,您可以使用:

/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -dump

显示 Launch Services 数据库的转储,其中包括 URL 方案及其到应用程序的映射。

这是一个单行脚本,它根据 Ken Thomases 的回答使用 Perl 解析 LaunchServices 数据库中的数据。

/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -dump | LC_ALL=C tr '\n' '\a' | perl -pe 's/(-{20}\aBundleClass)/\n/g' | perl -e 'sub trim {my $s = shift; $s =~ s/\a//g; $s =~ s/\"//g; $s =~ s/\{//g; $s =~ s/\}//g; $s =~ s/^\s+|\s+$//g; return $s}; sub trimCommas {my $s = shift; $s =~ s/,//g; return $s}; while ($line = <STDIN>) {if (index($line, "CFBundleURLTypes = ") != -1) {$urlTypesData = $line; $urlTypesData =~ s/^.*CFBundleURLTypes = .*?\((.*?)[^es] =.*$//g; $urlTypesData =~ s/(^.*)\).*?$//g; @urlTypes = split("}", $urlTypesData); if (trim($urlTypesData) ne "" && int(@urlTypes) > 1) {$name1 = $path = (split("CFBundleExecutable", $line))[0]; $name1 =~ s/.*name:(.*?)\a.*$//g; $name2 = $line; $name2 =~ s/^.*CFBundleExecutable = (.*?)\;.*$//g; $appName = ((index($name1, "(null)") == -1) ? trim($name1) : trim($name2)); $path =~ s/.*path:(.*?)\a.*$//g; print $appName . "\f   " . "3[38;5;173m(path: " . trim($path) . ")3(B3[m"; for ($i=0; $i<int(@urlTypes)-1; $i++) {$curUrlName = @urlTypes[$i]; if (index(@urlTypes[$i], "CFBundleURLName") != -1) {$curUrlName =~ s/^.*CFBundleURLName =(.*?);.*$//} else {$curUrlName = "\e[3m[Blank]\e[0m"}; $schemesRaw = @urlTypes[$i]; $schemesRaw =~ s/^.*CFBundleURLSchemes =.*?\((.*?)\).*$//g; @schemes = split(",", $schemesRaw); if (trimCommas(trim(@urlTypes[$i])) ne "") {print "\f\t" . trimCommas(trim($curUrlName)); for ($b=0; $b<int(@schemes); $b++) {print "\f\t\t" . trim(@schemes[$b])}}; print "\f"}}; print "\n"}}' | sort -uf | perl -pe 's/(\n)//g; s/\f/\n/g'

这是输出的几行: