首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过iOS应用程序与MS进行深度链接

通过iOS应用程序与MS进行深度链接
EN

Stack Overflow用户
提问于 2018-03-13 22:02:47
回答 2查看 990关注 0票数 0

我试图打开位于服务器上的Excel文档。我编写了以下代码,但对于UIApplication.shared.canOpenURL(url as URL),它总是返回false

我想我缺少一些深入链接到Excel的要求。为什么iOS不能理解ms-excel:ofe|u|格式?

代码语言:javascript
复制
@objc static func openExcel() {

    let originalString = "http://s000.tinyupload.com/download.php?file_id=23290165129849240725&t=2329016512984924072514118"
    let encodedString = originalString.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)
    let encodedURLString = "ms-excel:ofe|u|" + encodedString! + "|n|TestDoc.xlsx|a|App"

    if let url = NSURL(string: encodedURLString), 
        UIApplication.shared.canOpenURL(url as URL) {
        UIApplication.shared.openURL(url as URL)
    } else if let itunesUrl = NSURL(string: "https://itunes.apple.com/us/app/microsoft-excel/id586683407?mt=8&uo=4"), UIApplication.shared.canOpenURL(itunesUrl as URL) {
        UIApplication.shared.openURL(itunesUrl as URL)
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-16 07:59:49

我分析了你的代码并发现了一些错误。首先,您的URL重定向到某个地方,根据Microsoft文档,它无法处理重定向URL的

必须对URL进行编码,并且必须是指向文件的直接链接(而不是重定向)。如果URL格式是Office无法处理的,或者下载失败,Office将不会将用户返回到调用应用程序。

这是Microsoft文档链接

第二个错误是,您只编码包含站点URL的URL字符串,您应该考虑将方案ms-excel:后的部分作为URL并进行编码。

由于let url = URL(string: encodedURLString)结果nil编码不当,这就是为什么它不能像预期的那样工作。

下面是一个工作代码示例:

代码语言:javascript
复制
 @objc static func openExcel() {
        //replace the below url with yours. may be this one dosen't work
        let originalString = "ofe|u|https://pgcconline.blackboard.com/webapps/dur-browserCheck-bb_bb60/samples/sample.xlsx" 
        let encodedString = originalString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
        let encodedURLString = "ms-excel:" + encodedString!

        if let url = URL(string: encodedURLString),
            UIApplication.shared.canOpenURL(url) {
            UIApplication.shared.openURL(url)
        } else if let itunesUrl = NSURL(string: "https://itunes.apple.com/us/app/microsoft-excel/id586683407?mt=8&uo=4"), UIApplication.shared.canOpenURL(itunesUrl as URL) {
            UIApplication.shared.openURL(itunesUrl as URL)
        }
    }

注:从iOS 9开始,您必须在LSApplicationQueriesSchemes键(一个字符串数组)下白名单您的应用程序想要在Info.plist中查询的任何LSApplicationQueriesSchemes方案:

例如,在我们的例子中:

票数 2
EN

Stack Overflow用户

发布于 2018-03-13 23:19:50

当我试图打开上述问题中的URL时,我会被重定向到这个URL,所以我猜您的代码很好,可能只是您试图打开的excel文件实际上是一个HTML页面,因为tinyupload显然会阻止指向这些文件的直接链接。

也许可以尝试打开一个直接的excel文件下载链接,https://pgcconline.blackboard.com/webapps/dur-browserCheck-bb_bb60/samples/sample.xlsx (这是xlsx file sample download的第一个google结果)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49266569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档