4

我在我的应用程序中使用 URL 方案。我轻松地制作了一个来打开我的应用程序,只需将必要的项目添加到 info.plist。当前 URL“myappname://”将用户带到初始视图控制器 FirstTableViewController,但我想知道是否可以修改该 URL 方案,以便我可以拥有一个将用户带到某个视图控制器的方案,比如 ThirdTableViewController。我会将此作为启动中心之类的便捷功能使用。

4

5 回答 5

4

试试看这个:自定义网址方案

希望这将是一个有用的

于 2012-06-07T04:35:48.490 回答
4

这篇文章有点旧,但可能对 iOS 5 + 有用,因为检查的答案不正确。

AppDelegate 没有任何 navigationController 属性。

相反,您可以在 AppDelegate.m 中执行以下操作:

enter code here

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    MyViewController *controller = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:[NSBundle mainBundle]];
    UINavigationController *navController = (UINavigationController *)self.window.rootViewController;
    [navController presentModalViewController:controller animated:YES];

    return YES;        
}
于 2014-06-10T03:31:18.503 回答
0

在 ...AppDelegate.m

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
MyViewController *controller = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:[NSBundle mainBundle]];
[self.viewController presentModalViewController:controller animated:YES];
[controller release];

return YES;        
}
于 2012-06-07T04:54:56.143 回答
0

嗨,这是我的解决方案。

如果您可以调用在 "application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool" 事件中调用的导航功能(有延迟),您可以导航特定应用程序中的页面在调用之前甚至没有运行。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Actived keyboard avoider
        changeAppereance()
        delay(1) {
            deeplink = Deeplink()
            self.manageNavigation(launchOptions: launchOptions)
            self.navigate()
        }

        return true

    }


    private func manageNavigation(launchOptions: [UIApplicationLaunchOptionsKey: Any]?) {
        if let url = launchOptions?[UIApplicationLaunchOptionsKey.url] as? URL { //Deeplink
            print(url.absoluteString)
            deeplink = Deeplink()
            deeplink?.url = url
        }
        else if let activityDictionary = launchOptions?[UIApplicationLaunchOptionsKey.userActivityDictionary] as? [AnyHashable: Any] { //Universal link
            for key in activityDictionary.keys {
                if let userActivity = activityDictionary[key] as? NSUserActivity {
                    if let url = userActivity.webpageURL {
                        deeplink = Deeplink()
                        deeplink?.url = url
                    }
                }
            }
        }

    }

open func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
        print(url.absoluteString)
        deeplink = Deeplink()
        deeplink?.url = url
        navigate()
        return true
    }
于 2018-08-06T12:00:22.753 回答
-1

是的,可以修改 URL 方案,以便您可以将用户跳转到任何视图控制器。我使用并实现了普通链接和 https://hokolinks.com/深层链接。通过 hoko 链接深层链接,您可以修改您的 URL 方案,也可以使用该 URL 发送数据。

使用 Hoko Link 集成 iOS SDK - 将 URL 方案添加到您的应用程序 - SDK 设置 要将 HOKO 开源 SDK 集成到您的应用程序(仅限 iOS 5 及更高版本)中,您只需遵循 3 个简单步骤(使用 cocoapods 或手动执行) .

使用 CocoaPods

1- 在您的系统中安装 CocoaPods

2- 打开您的 Xcode 项目文件夹并创建一个名为 Podfile 的文件,其内容如下:

pod 'Hoko', '~> 2.3.0' 3- 运行 pod install 并等待 CocoaPods 安装 HOKO SDK。从现在开始,您应该开始使用 .xcworkspace,而不是使用 .xcodeproj 文件。

手动集成

1- 下载 Hoko SDK。

2- 将 Hoko 文件夹拖到您的项目中。

3- 确保还添加 SystemConfiguration.framework 和 zlib.dylib,以防您的项目尚未包含它。

将 SDK 与您的 Swift 项目集成

因为 HOKO SDK 是用 Objective-C 编写的,所以您必须手动将 Bridging Header 文件添加到您的项目中,以便在您的 Swift 代码中使用它:

1-文件>新建>文件...> iOS>源>头文件

2-将该头文件命名为 YourAppName-Bridging-Header.h

3-在该头文件中,导入#import

4-转到您的项目>构建设置>搜索Objective-C桥接头>从根文件夹(例如MyApp / MyApp-Bridging-Header.h)添加桥接头文件的路径

将 URL Scheme 添加到您的应用程序

接下来,我们需要定义您的应用的自定义 URL 类型(如果您还没有的话)。打开您的 Xcode 项目设置并在“信息”选项卡下展开“URL 类型”部分。如果您已经配置了 URL 类型,则可以跳过此步骤。

如果此部分为空,请单击“+”图标以添加新的 URL 类型。假设我们想通过“hoko://”打开应用程序。因此我们需要在 URL Schemes 中输入“hoko”。

我们还应该为这个 URL 类型分配一个唯一的标识符。Apple 建议您使用反向 DNS 表示法来确保类型之间没有名称冲突。在这个例子中,我们将使用“com.hoko.app”。

记下您的 URL 方案,因为当您通过仪表板创建应用程序时,我们会要求您提供它,例如“hoko”。

网址方案

设置关联域(通用链接) - iOS 9.0+

为了让您的应用程序完全支持 Apple 新推出的通用链接,您必须在应用程序目标的 Capabilities 选项卡内的 Associated Domains 部分中启用并添加一个新条目。单击“+”按钮并添加具有以下值的新条目:applinks:myapp.hoko.link,myapp 是您为应用程序的 Hoko 链接选择的 Hoko 子域。您还可以拥有自己的链接域(在子域部分了解更多信息)。

网址方案

SDK 设置

将以下行添加到 AppDelegate 类中的 applicationDidFinishLaunching 方法中(如果您使用的是 Objective-C,请不要忘记使用 #import 导入 HOKO 类)。

Objective-C Swift #import

- (BOOL)application:(UIApplication *)application
  didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [Hoko setupWithToken:@"YOUR-APP-TOKEN"];
 // The rest of your code goes here...

  return YES;
}

如果您在智能链接中使用自定义域,则必须使用 setupWithToken:customDomain: 设置 iOS SDK,如下所示:

Objective-C Swift #import

- (BOOL)application:(UIApplication *)application
  didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [Hoko setupWithToken:@"YOUR-APP-TOKEN"
     customDomain:@"your.custom.domain.com"];
  // The rest of your code goes here...

 return YES;

注意:确保在 application:didFinishLaunchingWithOptions: 委托方法中返回 YES,以允许处理打开您的应用程序的传入深层链接。返回 NO 将阻止请求。

使用 Hoko Link SDK 设置您的移动深度链接

于 2016-04-18T10:55:32.410 回答