Как определить, установлено ли у пользователя приложение для iOS? - PullRequest
11 голосов
/ 24 августа 2011

Как определить, установлено ли на устройстве iOS определенное приложение? Если я знаю название приложения, могу ли я использовать canOpenURL как-нибудь?

Ответы [ 4 ]

11 голосов
/ 24 августа 2011

Если приложение поддерживает пользовательскую схему URL, вы можете проверить UIApplication -canOpenURL:.Это скажет вам только, что приложение, способное открыть эту схему URL, доступно, не обязательно, какое это приложение.Не существует общедоступного механизма для проверки того, какие другие приложения пользователь установил на свое устройство.

Если вы управляете обоими приложениями, вы также можете использовать общую связку ключей или монтажную панель для более детального обмена данными между ними.

8 голосов
/ 23 сентября 2011

Вы также можете проверить таким образом:

BOOL temp = [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"yourAppURL://"]];
            
if(!temp)
{
    NSLog(@"INVALID URL"); //Or alert or anything you want to do here
}
0 голосов
/ 12 июня 2017

Facebook использует это https://github.com/facebook/facebook-ios-sdk/blob/master/FBSDKCoreKit/FBSDKCoreKit/Internal/FBSDKInternalUtility.m внутри, вы можете сделать то же самое

#define FBSDK_CANOPENURL_FACEBOOK @"fbauth2"

+ (BOOL)isFacebookAppInstalled
{
  static dispatch_once_t onceToken;
  dispatch_once(&onceToken, ^{
    [FBSDKInternalUtility checkRegisteredCanOpenURLScheme:FBSDK_CANOPENURL_FACEBOOK];
  });
  NSURLComponents *components = [[NSURLComponents alloc] init];
  components.scheme = FBSDK_CANOPENURL_FACEBOOK;
  components.path = @"/";
  return [[UIApplication sharedApplication]
          canOpenURL:components.URL];
}

Код в Swift 3

static func isFacebookAppInstalled() -> Bool {
  let schemes = ["fbauth2", "fbapi", "fb"]
  let schemeUrls = schemes.flatMap({ URL(string: "\($0)://") })

  return !schemeUrls.filter({ UIApplication.shared.canOpenURL($0) }).isEmpty
 }
0 голосов
/ 14 апреля 2016

для быстрых пользователей

     let urlPath: String = "fb://www.facebook.com"
     let url: NSURL = NSURL(string: urlPath)!

    let isInstalled = UIApplication.sharedApplication().canOpenURL(url)
    if isInstalled {
        print("Installed")
    }else{
        print("Not installed")
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...