diff --git a/ShadowsocksX-NG/AppDelegate.swift b/ShadowsocksX-NG/AppDelegate.swift index bdf9fc9..eda718e 100644 --- a/ShadowsocksX-NG/AppDelegate.swift +++ b/ShadowsocksX-NG/AppDelegate.swift @@ -143,7 +143,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserNotificationCenterDele var isChanged = false for url in urls { - let profielDict = ParseSSURL(url) + let profielDict = ParseAppURLSchemes(url)//ParseSSURL(url) if let profielDict = profielDict { let profile = ServerProfile.fromDictionary(profielDict as [String : AnyObject]) mgr.profiles.append(profile) diff --git a/ShadowsocksX-NG/Utils.h b/ShadowsocksX-NG/Utils.h index d6d71cc..43f5086 100644 --- a/ShadowsocksX-NG/Utils.h +++ b/ShadowsocksX-NG/Utils.h @@ -15,7 +15,9 @@ NSString* decode64(NSString* str); NSString* encode64(NSString* str); -NSDictionary* ParseSSURL(NSURL* url); +NSDictionary* ParseAppURLSchemes(NSURL* url); + +static NSDictionary* ParseSSURL(NSURL* url); static NSDictionary* ParseSSRURL(NSURL* url); diff --git a/ShadowsocksX-NG/Utils.m b/ShadowsocksX-NG/Utils.m index 1069f23..d412ad3 100644 --- a/ShadowsocksX-NG/Utils.m +++ b/ShadowsocksX-NG/Utils.m @@ -98,10 +98,24 @@ NSString* encode64(NSString* str){ return stringBase64; } +NSDictionary* ParseAppURLSchemes(NSURL* url){ + if(!url.host){ + return nil; + } + NSString *urlString = [url absoluteString]; + if ([urlString hasPrefix:@"ss://"]) { + return ParseSSURL(url); + } + if ([urlString hasPrefix:@"ssr://"]) { + return ParseSSRURL(url); + } + return nil; +} + // 解析SS URL,如果成功则返回一个与ServerProfile类兼容的dict // 或SSR URL,ServerProfile类已经默认添加SSR参数,默认放空,如果URL为SSR://则改变解析方法 // ss:// + base64(method:password@domain:port) -NSDictionary* ParseSSURL(NSURL* url) { +static NSDictionary* ParseSSURL(NSURL* url) { if (!url.host) { return nil; } @@ -159,9 +173,6 @@ NSDictionary* ParseSSURL(NSURL* url) { }; } - }else if ([urlString hasPrefix:@"ssr://"]){ - NSDictionary *ssrObj = ParseSSRURL(url); - return ssrObj; } return nil; }