如何以编程方式从已安装的应用程序获取方案?

时间:2013-12-17 13:32:03

标签: ios objective-c url url-scheme launching-application

我正在创建一个应用程序,向您显示已安装的所有应用程序的列表,然后当我选择时,我想在我的设备中启动该应用程序。我正在使用以下代码

- (IBAction)openapp:(NSString*)app
{
    urlString =  [[NSString alloc]initWithFormat:@"%@:",app.accessibilityLabel];//init string with app name and append it to ":"

    [urlString stringByReplacingOccurrencesOfString:@" "withString:@""];//remove all spaces

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];//open URL with scheme
}

在某些情况下,该方案与应用程序的名称相同,但有时会失败,因为它不是(例如 - facebook scheme = fb)。所以,我需要从某个地方获得应用程序的方案。此外,我不能只创建一个NSString并在那里分配一个固定的方案,因为我将打开的应用程序将从一个设备更改为设备。 任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

由于应用程序的沙箱性质意味着所需信息不可读,我认为这是不可能的。我也找不到任何Apple整理列表的参考。

来自Apple Docs的引用虽然没有结论,但暗示它是不可能的,因为它甚至无法确定哪个应用程序(如果有的话)会打开。

  

**注意:如果有多个第三方应用注册处理相同的URL方案,则目前没有确定将为该方案提供哪个应用的流程。


如果您已经知道要安装哪些应用程序,则此方法应返回YES:

[[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"myScheme://"]