openUrl:
を実行する前に、他のアプリを呼び出す前に、自分のアプリケーションのコールバックが機能していることをプログラムで確認するにはどうすればいいですか?(x-callback-url仕様に従って動作するアプリ)制限は、我々は、このアプリスキームの登録と一部アプリケーションがそのURLに応答ことを確認しているということである私のアプリはURLスキームに応答しますか?
- (BOOL) respondsToUrl:url
{
BOOL schemeIsInPlist = NO; // find out if the sceme is in the plist file.
NSBundle* mainBundle = [NSBundle mainBundle];
NSArray* cfBundleURLTypes = [mainBundle objectForInfoDictionaryKey:@"CFBundleURLTypes"];
if ([cfBundleURLTypes isKindOfClass:[NSArray class]] && [cfBundleURLTypes lastObject]) {
NSDictionary* cfBundleURLTypes0 = [cfBundleURLTypes objectAtIndex:0];
if ([cfBundleURLTypes0 isKindOfClass:[NSDictionary class]]) {
NSArray* cfBundleURLSchemes = [cfBundleURLTypes0 objectForKey:@"CFBundleURLSchemes"];
if ([cfBundleURLSchemes isKindOfClass:[NSArray class]]) {
for (NSString* scheme in cfBundleURLSchemes) {
if ([scheme isKindOfClass:[NSString class]] && [url hasPrefix:scheme]) {
schemeIsInPlist = YES;
break;
}
}
}
}
}
BOOL canOpenUrl = [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString: url]];
return schemeIsInPlist && canOpenUrl;
}
:
ああ、今私は少し良く理解しています。 URLを開く前に、そのURLを開いたときに何が起きるかを特定する方法はありません。 iOSに照会するLaunchServicesインターフェースはありません。 –
私はこれが(100%信頼できるわけではありませんが)利用可能な最良の方法だと思われるので、私の答えを受け入れることにしました。 –