如何替换 - (BOOL)application: openURL: sourceApplication: annotation:(id)annotation

Jet*_*Set 6 objective-c ios

好吧,我尽力解决这个问题,但绝对没有运气。

我有这一段可以正常工作。但需要解决 deprecate 方法。

-(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];
}
Run Code Online (Sandbox Code Playgroud)

我看到它现在已被弃用。

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];
    }
Run Code Online (Sandbox Code Playgroud)

预先感谢您的审阅,非常感谢您的帮助。

ara*_*_86 5

从 iOS9 开始, “ application:openURL:sourceApplication:annotation: ”方法已被弃用。所以基本上正如@user2559325建议的那样,这个回调在iOS9以下的设备中不起作用。请参考以下SDK接口。

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(nullable NSString *)sourceApplication annotation:(id)annotation 
Run Code Online (Sandbox Code Playgroud)

NS_DEPRECATED_IOS(4_2, 9_0, "请使用 application:openURL:options:")


qua*_*t24 2

看看这个帖子。它速度很快,但实现基本相同。

在 Objective-C 中,它会是这样的

NSString *sourceApplication = options[UIApplicationOpenURLOptionsSourceApplicationKey];
return [[FBSDKApplicationDelegate sharedInstance] application:application
                                                          openURL:url
                                                sourceApplication:sourceApplication
                                                       annotation:nil];
Run Code Online (Sandbox Code Playgroud)