Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何替换-(BOOL)应用程序:openURL:sourceApplication:annotation:(id)annotation_Ios_Objective C - Fatal编程技术网

Ios 如何替换-(BOOL)应用程序:openURL:sourceApplication:annotation:(id)annotation

Ios 如何替换-(BOOL)应用程序:openURL:sourceApplication:annotation:(id)annotation,ios,objective-c,Ios,Objective C,我尽了最大的努力来解决这个问题,但绝对没有运气 我有这一段,用来正常工作。但需要解决不推荐的方法 -(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { NSLog(@"%@",url.scheme); NSString *path = [[NSB

我尽了最大的努力来解决这个问题,但绝对没有运气

我有这一段,用来正常工作。但需要解决不推荐的方法

-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {

    NSLog(@"%@",url.scheme);
    NSString *path = [[NSBundle mainBundle] pathForResource: @"Info" ofType: @"plist"];
    NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile: path];
    NSString *str = [NSString stringWithFormat:@"fb%@",[dict objectForKey: @"FacebookAppID"]] ;

    BOOL result = [[FBSDKApplicationDelegate sharedInstance] application:application
                                                          openURL:url
                                                sourceApplication:sourceApplication
                                                       annotation:annotation
            ];
    if (result) {
        return YES;
    }

    return [self.instagram handleOpenURL:url];
}
我看到它现在已经被弃用了

不推荐使用iOS(4.2及更高版本):改用application:openURL:options:。这将产生以下结果。但这不是所谓的。我错过了什么

-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options{
NSLog(@"%@",url.scheme);
        NSString *path = [[NSBundle mainBundle] pathForResource: @"Info" ofType: @"plist"];
        NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile: path];
        NSString *str = [NSString stringWithFormat:@"fb%@",[dict objectForKey: @"FacebookAppID"]] ;

        BOOL result = [[FBSDKApplicationDelegate sharedInstance] application:application
                                                              openURL:url
                                                    sourceApplication:sourceApplication
                                                           annotation:annotation
                ];
        if (result) {
            return YES;
        }

        return [self.instagram handleOpenURL:url];
    }
-(BOOL)应用程序:(UIApplication*)应用程序openURL:(NSURL*)url选项:(NSDictionary*)选项{
NSLog(@“%@”,url.scheme);
NSString*path=[[NSBundle mainBundle]pathForResource:@“Info”类型:@“plist”];
NSDictionary*dict=[NSDictionary Dictionary WithContentsOfFile:path];
NSString*str=[NSString stringWithFormat:@“fb%@,[dict objectForKey:@“FacebookAppID”];
BOOL result=[[FBSDKApplicationDelegate sharedInstance]应用程序:应用程序
openURL:url
sourceApplication:sourceApplication
注释:注释
];
如果(结果){
返回YES;
}
返回[self.instagram handleOpenURL:url];
}
提前感谢您的审阅,我们非常感谢您提供的任何帮助。

看看这个。它在swift中,但基本上是相同的实现

在objective-c中是这样的

NSString *sourceApplication = options[UIApplicationOpenURLOptionsSourceApplicationKey];
return [[FBSDKApplicationDelegate sharedInstance] application:application
                                                          openURL:url
                                                sourceApplication:sourceApplication
                                                       annotation:nil];

您正在使用的方法从iOS 9.0开始提供。它不会在iOS 9.0以下的设备中调用

它还可以在iOS 9+设备中工作。您必须将LSApplicationQueriesSchemes键添加到您的信息列表中

(Array-iOS)指定URL方案 您希望应用程序能够与 UIC应用程序类。对于您希望应用程序与之一起使用的每个URL方案 方法,将其作为字符串添加到此数组中。阅读 canOpenURL:有关的重要信息的方法描述 声明支持的方案并使用该方法

了解注册URL方案的反向操作 应用程序可以处理、读取CbundleUrlTypes密钥的描述

iOS 9.0及更高版本支持此密钥

方法“application:openURL:sourceApplication:annotation:”从iOS9开始就不推荐使用。因此,基本上正如@user2559325所建议的,这种回调在iOS9以下的设备中不起作用。请参考以下SDK接口

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(nullable NSString *)sourceApplication annotation:(id)annotation 

NS\u不推荐的IOS(4\u 2,9\u 0,“请使用应用程序:openURL:options:”)

以下是Swift 3中的简单解决方案

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
   return FBSDKApplicationDelegate.sharedInstance().application(app, open: url, options: options)
}

这个逻辑将在哪里执行?如果在didFinishLaunchingWithOptions中,URL不可用,并且我引用了本文来访问URL方案,但没有解析。它将位于
应用程序:openURL:options:
中。FBSDK将访问plist并使用应用程序方案调用此方法。谢谢!我试试看。但最重要的是,我不知道如何调用“application:openURL:options:”方法。与其将链接作为答案发布,不如添加一些文本来解释此答案如何帮助OP解决当前问题。谢谢