2014-08-28 28 views
7

我有2個SDK需要使用application:openURL:sourceApplication:annotation方法。一個是FacebookSDK,第二個是GooglePlusSDK處理兩個應用程序:openURL:sourceApplication:註釋

這些都是方法:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 
{ 
    return [FBAppCall handleOpenURL:url sourceApplication:sourceApplication]; 
} 

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 
{ 
    return [GPPURLHandler handleURL:url sourceApplication:sourceApplication annotation:annotation]; 
} 

我的問題是怎麼可能將其遷移到一個方法?什麼是最好的方法?

在此先感謝。

+0

你能不能確定根據總部設在使用簡單的URL '如果陳述'? URL方案會不會不同? – Popeye 2014-08-28 07:49:15

回答

8

你也許可以這樣做:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 
{ 
    BOOL shouldOpen = [FBAppCall handleOpenURL:url sourceApplication:sourceApplication]; 
    shouldOpen = shouldOpen ? shouldOpen : [GPPURLHandler handleURL:url sourceApplication:sourceApplication annotation:annotation]; 

    return shouldOpen; 
} 
+0

謝謝你。你節省了我的時間。祝福。 – Smita 2016-08-03 10:04:33

+0

shouldOpen | = [GPPURLHandler句柄..] – 2016-11-22 08:54:23

20

使用邏輯OR運算符||

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 
{ 
    return [FBAppCall handleOpenURL:url sourceApplication:sourceApplication] || [GPPURLHandler handleURL:url sourceApplication:sourceApplication annotation:annotation]; 
} 

斯威夫特版本

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String!, annotation: AnyObject) -> Bool { 
    return FBAppCall.handleOpenURL(url, sourceApplication: sourceApplication) || GPPURLHandler.handleURL(url, sourceApplication: sourceApplication, annotation: annotation) 
} 
3

你也可以把支票上0123的基礎前綴

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 
{ 
if FB URL prefix 
//Call FB method 
else 
//Google plus method 
} 
6

(斯威夫特這裏)一個清潔的方法是:

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String!, annotation: AnyObject) -> Bool { 
    var handled: Bool 
    if let facebook = url.scheme?.hasPrefix("fb") { 
     handled = FBAppCall.handleOpenURL(url, sourceApplication: sourceApplication) 
    } else { 
     handled = GPPURLHandler.handleURL(url, sourceApplication: sourceApplication, annotation: annotation) 
    } 
    // include any specific handling code as necessary 
    return handled 
} 
2

我落得這樣做:

- (BOOL)application:(UIApplication *)application //facebook & Google+ 
      openURL:(NSURL *)url 
    sourceApplication:(NSString *)sourceApplication 
     annotation:(id)annotation { 
    return([[FBSDKApplicationDelegate sharedInstance] application:application 
                  openURL:url 
               sourceApplication:sourceApplication 
                 annotation:annotation] 
      || 

      [GPPURLHandler handleURL:url 
        sourceApplication:sourceApplication 
         annotation:annotation] 
      ); 

    ; 
} 
相關問題