我的应用程序中有以下设置:

有一个容器视图,它包含3个视图控制器(A、B和C)。我可以从A,B或C转左或右。A或B都包含它们自己的集合视图。如果我点击A或B内集合视图中的任何单元格,PlayerVC (在上面的图^中指定的播放器)将启动,视频开始使用AVPlayer播放。
问题是:
Universal Links,所以当用户点击universal link时,它会直接将他们带到应用程序,启动PlayerVC,并开始播放视频。问题是,如果用户直接被带到PlayerVC (如果用户点击universal link ),那么如何初始化其他视图控制器?或者如何从PlayerVC到app delegate以下是一些场景:
PlayerVC,那么如果他们拒绝使用PlayerVC,应用程序就会崩溃。view controller B状态,那么当用户点击universal link时,我如何从view controller B转到PlayerVC这是app delegate中的委托方法,当用户点击universal link时会调用该方法(请注意HELP注释):
class AppDelegate: UIResponder, UIApplicationDelegate {
// Other App Delegate methods.....
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
// 1) Make sure the passed `user activity` has expected characteristics.
guard userActivity.activityType == NSUserActivityTypeBrowsingWeb, let url = userActivity.webpageURL else {
return false
}
// HELP: I need to get to `PlayerVC` from here?
return true
// If we can't do the above we default to opening the page in safari
}
}注意:我们的应用程序运行的是iOS 10。我们正在使用苹果新的:https://developer.apple.com/library/content/documentation/General/Conceptual/AppSearch/UniversalLinks.html
有什么想法吗?
发布于 2017-04-04 04:14:35
问题是: 这个应用程序能够共享通用链接,所以当用户点击一个通用链接时,它会直接将它们带到应用程序,启动PlayerVC,并开始播放视频。问题是,如果用户直接被带到PlayerVC,如果用户点击了一个通用链接,那么如何初始化其他视图控制器?或者如何从应用程序委托到PlayerVC?
对于这个问题,您需要首先实例化容器及其子视图控制器,然后才能显示PlayerVC
如果用户被直接带到PlayerVC,那么如果他们拒绝使用PlayerVC,应用程序就会崩溃。
有了我告诉过你的实现,它不应该崩溃。总会有一个容器控制器被实例化。
如果应用程序已经启动,但处于后台模式,假设用户处于视图控制器B中,那么当用户点击通用链接时,如何从视图控制器B转到PlayerVC?
您可以在AppDelegate中存储容器控制器的全局变量。这样您就可以访问控制器B,然后就可以调用
container.present(playerVC, animated: true, completion: nil)https://stackoverflow.com/questions/43197681
复制相似问题