Swift 3 iMessage 扩展无法打开 URL

2023-12-20

我正在创建一个 iOS 应用程序 iMessage 扩展。

根据苹果的例子 https://developer.apple.com/library/prerelease/content/samplecode/IceCreamBuilder/Introduction/Intro.html,我根据提供的逻辑创建一条消息

guard let url: URL = URL(string: "http://www.google.com") else { return }

let message = composeMessage(url: url)
activeConversation?.insert(message, completionHandler: { [weak self] (error: Error?) in
    guard let error = error else { return }
    self?.presentAlert(error: error)        
})

also

private func composeMessage(url: URL) -> MSMessage {
    let layout = MSMessageTemplateLayout()
    layout.caption = "caption"
    layout.subcaption = "subcaption"
    layout.trailingSubcaption = "trailing subcaption"

    let message = MSMessage()
    message.url = url
    message.layout = layout

    return message
}

and

private func presentAlert(error: Error) {
    let alertController: UIAlertController = UIAlertController(
        title: "Error",
        message: error.localizedDescription,
        preferredStyle: .alert
    )

    let cancelAction: UIAlertAction = UIAlertAction(
        title: "OK",
        style: .cancel,
        handler: nil
    )

    alertController.addAction(cancelAction)

    present(
        alertController,
        animated: true,
        completion: nil
    )
}

据我了解,发送消息后,单击一下,应该打开 Safari 浏览器。

当我点击已发送的消息时,MessageViewControllerscreen 发生在整个屏幕上,无需打开 safari 或其他应用程序。

哪里有问题?我怎样才能实现想要的功能?


以下是我用来从 iMessage 扩展程序打开 URL 的代码。目前正在努力在 WATUU iMessage 应用程序中打开音乐应用程序。例如使用 URL ”"

此功能目前适用于 iOS 10、11 和 12

func openInMessagingURL(urlString: String){
    if let url = NSURL(string:urlString){
        let context = NSExtensionContext()
        context.open(url, completionHandler: nil)
        var responder = self as UIResponder?

        while (responder != nil){
            if responder?.responds(to: Selector("openURL:")) == true{
                responder?.perform(Selector("openURL:"), with: url)
            }
            responder = responder!.next
        }
    }
}

Swift 4 更新

func openInMessagingURL(urlString: String){
    if let url = URL(string:urlString){
        let context = NSExtensionContext()
        context.open(url, completionHandler: nil)
        var responder = self as UIResponder?

        while (responder != nil){
            if responder?.responds(to: #selector(UIApplication.open(_:options:completionHandler:))) == true{
                responder?.perform(#selector(UIApplication.open(_:options:completionHandler:)), with: url)
            }
            responder = responder!.next
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Swift 3 iMessage 扩展无法打开 URL 的相关文章

  • iOS 上 Safari 中的 shift 键

    有没有办法在javascript中判断手机键盘上是否按下了shift键 并将其与大写锁定 按两次shift键 区分开来 一些事实 首先 让我们看一下有关 iOS 键盘的一些事实 我假设您已经知道了 当您进入键盘模式时 shift键始终处于激
  • 从 ios 应用程序到 symfony2 Web 应用程序的登录和管理会话

    我使用 Symfony2 开发了一个 Web 应用程序 我用过FOS用户包用于用户管理和安全 现在 我正在考虑为我的网络开发一个本机 iOS 应用程序 但并不真正知道如何解决从应用程序创建会话的问题 并在整个交互用户应用程序中维护它 换句话
  • 如何从 Xcode 4.5 卸载 iOS 5.0 模拟器

    我已经安装了 Xcode 4 5 由于我编写应用程序是为了好玩 我不打算支持旧版 iOS 版本 并且为了节省 500 GB iMac 上的空间 是否有办法删除它 尝试从 Xcode 包中支持的平台中删除 iPhone iPhoneSimul
  • iOS 确定视频中的帧数

    如果我有一个 Swift 中的 MPMoviePlayerController MPMoviePlayerController mp MPMoviePlayerController contentURL url 有没有办法获取视频中的帧数u
  • 在 Swift 中的 For 循环中更改对象的属性

    我创建了一个名为 ShoppingList 的简单结构 struct ShoppingList var shoppingListId NSNumber var title String var groceryItems GroceryIte
  • Apple 由于崩溃而拒绝了我的应用程序,无法重现它

    我刚刚上传了一个应用程序到应用程序商店 它是为ios 7开发的 他们拒绝了该应用程序 因为我无法重现崩溃 他们向我发送了这份崩溃报告 Exception Type EXC BAD ACCESS SIGSEGV Exception Subty
  • gestureRecognizer shouldReceiveTouch 持续存在于已释放的视图中导致崩溃

    我有一个相当简单的 UITableView 它在堆栈上推送一个新视图 新视图有一个像这样初始化的gestureRecognizer synthesize swipeGestureLeft void viewDidLoad swipeGest
  • 上下文菜单未在 SwiftUI 中更新

    我正在尝试设置 SwiftUI contextMenu带有一个切换按钮Bool价值 上下文菜单的按钮文本应该在以下情况下更改 Bool切换 但上下文菜单不会更新 有没有办法强制更新上下文菜单 描述问题的示例代码 import SwiftUI
  • Swift 中计算只读属性与函数

    在 Swift WWDC 简介会话中 只读属性description被证明 class Vehicle var numberOfWheels 0 var description String return numberOfWheels wh
  • 从字典创建 Swift 对象

    如何根据 Swift 字典中的查找值动态实例化类型 希望这对其他人有用 我们需要进行一些研究才能弄清楚这一点 目标是避免巨大的 if 或 switch 语句从值创建每个对象类型的反模式 class NamedItem CustomStrin
  • Bootstrap 响应式表格在 iOS 设备上无法垂直滚动

    这就是我所拥有的 div class table responsive table class table style background transparent table div 我正在使用以下 bootstrap css 文件 ht
  • UIScrollView 与 UITabBarController 切断

    我有一个 UIScrollView 我将其放置在视图中 界面生成器文档 xib m h 但是 UIScrollView 的下半部分被剪切 并且由于我有一个 UITabBarController 而没有显示其下半部分 我在 appdelega
  • iOS 有 INTERNET 权限吗?

    我在 iOS 设备上的 flutter dio 包上遇到了一个奇怪的问题 我编写了一个向 url 发送 GET 请求的应用程序 Android 上一切正常 但 iOS 上的请求似乎无法通过 没有发生任何错误 什么也没有 我在 Android
  • 使用未声明的类型“对象”

    这太奇怪了 通常我可以理解未声明的类 但这是声称 Object 类本身未声明 NSObject 可以工作 但我的项目设置方式我需要它是一个纯 Swift 对象 我的类标题如下所示 import UIKit import Foundation
  • 如何将设备上未保存的图片上传到dropbox帐户?(IOS)

    Dropbox RestClient 仅保存文件 所以我想先将图像保存在本地文件夹中 然后上传它 结果它保存了文件 但它已损坏 NSString localPath NSBundle mainBundle pathForResource I
  • 自动生成的 Swift 桥接标头中“找不到接口声明”

    我当前的项目包含 Swift 和 Objective C 代码 两种类型的源文件都使用另一种语言的代码 当我进行完全清理并重新编译时 几乎每个 Swift 类声明都出现错误Module Swift h 形式为 Cannot find int
  • 如何将nsmutable数组添加到sqlite数据库表中

    如何将nsmutablearray添加到sqlite数据库表中 有人可以帮我编码吗 您可以使用 for int i 0 i lt mutArray count i NSString string mutArray objectAtIndex
  • iOS:如何创建核心数据库的备份副本?以及如何导出/导入该副本?

    我想为我的应用程序的用户提供创建核心数据数据库备份的可能性 特别是在他切换到新设备等情况下 我该怎么做呢 特别是如何重新导入该文件 我的意思是 假设他制作了数据库的备份副本 然后更改了大量内容并想要重置为以前保存的备份副本 我该怎么做呢 T
  • iOS 搜索栏不显示结果

    更新 这实际上有效 我的自定义单元格的样式尚未出现 因此单元格看起来是空白的 那我怎样才能得到searchResultsTableView使用我的自定义单元格 我在表格视图中实现了搜索栏 当我调试时搜索 过滤所有工作 但是当我在搜索栏中输入
  • 隐藏 UITableview 单元格

    我正在尝试从 UITableView 中隐藏单元格 就像删除操作一样 但我只想隐藏它以便稍后在相同位置显示它 我知道 UITableViewCell 有一个名为 隐藏 的属性 但是当我使用此属性隐藏单元格时 它会隐藏但没有动画 并且会留下空

随机推荐

  • phpunit 模拟综合文档

    有关于什么是模拟以及如何使用它们的描述 http www phpunit de manual current en test doubles html http www phpunit de manual current en test d
  • Firebase HTTPs 可调用 iOS Swift

    我已经使用 Firebase 创建了一个可行的云功能 可以在我的浏览器中使用它 现在 我正在使用我的 iOS Swift 代码 并已成功安装所有依赖项 但是 我是 iOS Swift 新手 并尝试找出从云函数调用 URL 的位置 以下是 F
  • 有没有办法在 Vimscript 中使用两个自定义的完整函数?

    有没有办法在 Vim 中实现以下目标 command nargs complete customlist CustomFunc1 complete customlist CustomFunc2 Foo call MyFunction
  • 从oracle中的存储过程分配输出参数

    请帮我解决以下场景 我需要在另一个存储过程中调用一个存储过程 内部 SP 将返回一个数值 我需要将其存储在局部变量中 粗略的代码 AssignSpResult NUMBER AssignSpResult SPtobeused Param1
  • 如何防止 WP7 白色主题上的 ApplicationBar 闪烁?

    我有一个 Windows Phone 7 1 Mango 应用程序 我基本上成功地覆盖了内置主题颜色 但是 如果用户选择了白色主题并且页面具有深色背景和深色应用程序栏 则应用程序栏将使用白色背景进行渲染和动画 这会导致烦人的闪烁 完成动画后
  • 如何获取给定月份中每周的日期间隔?

    有没有办法在给定一个月的 PHP 中获取每周的开始 结束日期 例如 如果我本月 2011 年 11 月 我需要返回 30 Oct gt 5 Nov 6 Nov gt 12 Nov 13 Nov gt 19 Nov 20 Nov gt 26
  • 带有子报表的行后 SSRS 分页符(在矩形中)

    我花了几个小时寻找 简单 的解决方案 我有一个报告 SSRS 2008 R2 其中包含按 saleslineid 分组的行的 tablix 对于每个销售线 我想显示一个包含规格的子报告 然后显示销售线的组件 但我希望组件列表在新页面上开始
  • 具有 ServiceStack 路由回退和 Api 前缀的 Vue.js 路由器历史记录模式

    每个客户端路由都以哈希开头 如何在 Vue Router 中启用历史记录模式而不干扰 api 路由 另外 我不想以 api 开始我的路线 客户端路由不适用于 Config HandlerFactoryPath 设置为 api 的情况 有办法
  • 在 value="" 属性中打印 JS 变量

    我正在尝试实现一个具有动态值的 Paypal 按钮 例如 当我输入 value 300 00 时 该按钮工作正常 但是 如果我按照我的方式操作 该按钮将无法正常工作 变量价格是 JS 变量 它保存我需要放入 Paypal 按钮的信息 这是有
  • 如何获取拖放到控制台应用程序窗口上的项目的文件路径?

    我希望能够让用户将文件拖放到我的控制台应用程序的窗口上 这样他们就不会被迫将文件拖放到应用程序的图标 或链接 或者更糟糕的是在控制台中编写命令行 如何获取拖放到应用程序窗口中的文件的路径列表 你可以只听键盘的声音 将文件拖到控制台窗口时 窗
  • 使用 VBA 将 Round 函数插入当前单元格

    我试图让将 Round 函数插入到许多已经有公式的单元格中变得更容易 例如 如果单元格 A1 具有公式 b1 b2 使用这个宏后 我想要读取单元格内容 Round b1 b2 每个单元格中的公式都不相同 因此b1 b2部分必须是任何东西 我
  • React Router 4 - componentWillReceiveProps() 不触发

    我正在使用 React Router 4 当我使用渲染参数 componentWillReceiveProps 渲染组件时 它不会第一次触发 因此我需要单击两次才能将道具发送到组件 我这样渲染 const CartRoute props g
  • 如何生成具有指数分布(具有均值)的随机数?

    我正在尝试生成均值等于 1 的指数分布随机数 我知道如何获取均值和标准差正态分布的随机数 我们可以通过normal mean standard deviation 但我不知道如何获得指数分布的随机数 谁能帮我这个 With C 11该标准实
  • 编译时递归和条件

    我正在阅读以下回复 在没有循环或条件的情况下打印 1 到 1000 https stackoverflow com questions 4568645 printing 1 to 1000 without loop or condition
  • 如何使代码块输出在 quarto Revealjs 演示文稿中水平滚动

    我之前使用 R 中的 xaringan 包做了一个可滚动代码块输出的演示 如下图所示 我想在 quarto Revealjs 演示文稿中制作相同的可滚动代码块输出 有人知道如何在四开演示文稿中做到这一点吗 scrollable code c
  • 在magento中通过电子邮件ID获取有关客户的信息

    我想通过电子邮件 ID 获取客户信息 因此我在控制器中创建一个方法 内容如下 public function showAction customer email email protected cdn cgi l email protect
  • Solr suggest - 如何将 solr suggest 定义为不区分大小写

    我的建议 拼写检查器 返回区分大小写的答案 我用它来自动完成 狗和狗返回不同的短语 我的建议定义如下 在 solrconfig 中
  • 强制 jQuery Mobile 重新评估动态插入内容的样式/主题

    客观的 通过加载 HTML 内容 ajax 将其插入 DOM 让 jQuery Mobile 应用主题样式 Problem 内容已插入 但缺少 jQuery Mobile 主题 Code ajax success function html
  • 从 vb 确定 Url 是绝对的还是相对的 [重复]

    这个问题在这里已经有答案了 我试图在 vb 中确定 URL 是绝对的还是相对的 我确信必须有一些库可以做到这一点 但我不确定是哪个 基本上我需要能够分析字符串 例如 相对 路径 和或 http www absolutepath com su
  • Swift 3 iMessage 扩展无法打开 URL

    我正在创建一个 iOS 应用程序 iMessage 扩展 根据苹果的例子 https developer apple com library prerelease content samplecode IceCreamBuilder Int