我正在开展一个项目,我在Vimeo上分享视频。在这个我的应用程序中打开一个视频,用户需要按下授权按钮在Vimeo上授权应用程序并获取访问令牌。所以,为此,我的应用程序打开safari并在那里打开Vimeo的网站。用户需要按下允许按钮,然后它必须再次返回到应用程序。但我无法知道回调网址应该是什么让Safari / Vimeo回到我的应用程序。
请提出您对此的看法。
答案 0 :(得分:17)
您需要通过编辑应用的Info.plist为您的应用设置自定义网址方案。在Apple的开发者网站上有大量关于此的文档。这是一篇详细介绍的文章:http://iosdevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html
然后您的网站只需要打开一个使用您应用的网址方案的网址(例如:myappscheme:// do / something / cool?foo = bar)。如果您的应用关注通过您的网站传递给它的任何数据,那么实现“application:openURL:sourceApplication:annotation:”方法并检查传入的NSURL。您可以在Apple的文档中阅读更多相关信息:http://developer.apple.com/library/ios/#documentation/uikit/reference/UIApplicationDelegate_Protocol/Reference/Reference.html
答案 1 :(得分:2)
您需要为您的应用实施名为“网址计划”的内容,这意味着将您的应用注册到某个网址,以便可以从中打开。
1)您应该在info.plist文件中添加一行。 2)您需要收听应用中的网址,然后执行所需操作。
Google了解更多信息......
答案 2 :(得分:0)
支持自定义 URL 方案:
网址必须以您的自定义方案名称开头。为您的应用支持的任何选项添加参数。例如,照片库应用可能会定义一种 URL 格式,其中包含要显示的相册的名称或索引。
一个例子是:
myphotoapp:albumname?name="foods"
myphotoapp:albumname?index=1
注册您的 URL Scheme
处理传入的 URL
系统通过调用您的应用委托的 application(_:open:options:)method. you can use
NSURLComponents` API 来提取组件,从而将 URL 传递给您的应用。从系统提供的选项字典中获取有关 URL 的其他信息,例如哪个应用打开了它。
func application(_ application: UIApplication,
open url: URL,
options: [UIApplicationOpenURLOptionsKey : Any] = [:] ) -> Bool {
// Determine who sent the URL.
let sendingAppID = options[.sourceApplication]
print("source application = \(sendingAppID ?? "Unknown")")
// Process the URL.
guard let components = NSURLComponents(url: url, resolvingAgainstBaseURL: true),
let albumPath = components.path,
let params = components.queryItems else {
print("Invalid URL or album path missing")
return false
}
if let photoIndex = params.first(where: { $0.name == "index" })?.value {
print("albumPath = \(albumPath)")
print("photoIndex = \(photoIndex)")
return true
} else {
print("Photo index missing")
return false
}
}
如果您的应用已选择加入 Scenes
,并且您的应用未运行,则系统会在启动后将网址传递给 scene(_:willConnectTo:options:)
委托方法,并在您的应用打开时传递给 scene(_:openURLContexts:)
内存中运行或挂起时的 URL。
func scene(_ scene: UIScene,
willConnectTo session: UISceneSession,
options connectionOptions: UIScene.ConnectionOptions) {
// Determine who sent the URL.
if let urlContext = connectionOptions.urlContexts.first {
let sendingAppID = urlContext.options.sourceApplication
let url = urlContext.url
print("source application = \(sendingAppID ?? "Unknown")")
print("url = \(url)")
// Process the URL similarly to the UIApplicationDelegate example.
}
}