大多数浏览器和
Developer App 均支持流媒体播放。
-
构建“邮件”app 扩展
了解 MailKit:基于“邮件”构建出众体验的最佳方式。借助 MailKit,您的 app 能够轻松安全地与 macOS 的“邮件”app 进行交互。我们将深入研究 MailKit API,并向您展示如何创建用于撰写消息、发送操作消息、确保电子邮件安全和阻止内容的扩展。
资源
-
下载
哈啰 邮件是重要的应用程序 而邮件应用程序扩展功能可让你强化 邮件的一些功能 效果绝佳又新奇 我是亚博拉许 我和我的同事赛斯 会一步步教你如何建立 很棒的邮件应用程序扩展功能 我们在macOS Monterey加载 新架构MailKit来建立邮件扩展功能 这些扩展功能和其他应用程序的 扩展功能一样 例如Safari应用程序扩展功能 和Share sheet扩展功能 都是以使用者的隐私权和安全性 作为立足点建立而成的 MailKit的API的文档很充分 主要的macOS发行版都会支持 它和其他应用程序的扩展功能一样 可在正确登入的Mac应用程序内 或搭配你现有的应用程序 也可以在App Store上分发 邮件扩展功能是邮件的未来趋势 插件在未来的 macOS版本中会停止运作 我们会介绍四种新的方式 让你延伸邮件的用户体验 首先 撰写扩展功能让你 在撰写邮件时 有新的工作流程 动作扩展功能提供内送邮件的 自定义规则 帮你管理收件匣 内容阻挡扩展功能提供邮件中 电子邮件的WebKit内容阻挡器 最后 邮件安全性扩展功能可以 在传送和接收邮件时 为电子邮件 签名、加密和解密 提供更高安全性 这提供完整的邮件扩展功能 协助撰写邮件 对内送邮件采取行动 阻挡不想要的邮件内容 提供加密和解密 它们容易写入 非常强大并且稳定 即使OS和邮件应用程序随时间变化 它们也会持续运作 在我们建立具有这些功能的 邮件扩展功能前 先来看一个使用中的例子 想象我在一间大型的跨国公司工作 我所有的同事正在合作进行 几个高度机密的项目 为了协助保护我们项目的机密 我们使用一个取名为“大秘密”的扩展功能 来验证邮件的收件人 我想要寄一封邮件给我的同事赛斯 更新我们在火星的远程办公室的近况 首先你要注意的是在邮件撰写窗口里 大秘密扩展功能的按钮 这个扩展功能提供我正在进行的 专案列表 我选火星远程办公室 我输入主旨和赛斯的邮件地址 扩展功能可以验证这个项目 是否对赛斯公开 并在他的 邮件地址加上蓝色和勾选符号 当然 这个项目这么重要 我们也想知会我们的经理麦奇 所以我也要加他 嗯 看来麦奇不知道 我们新的远距离办公室 让我来把他移除并传送邮件
噢 我收到赛斯的回复 在邮件列表上显示红色 这是因为大秘密扩展功能 执行一个动作 将跟火星项目 有关的邮件加上红色 那里有个图标表示扩展功能 在这封邮件上执行动作 当我检视邮件 邮件查看器内的图示表示 大秘密扩展功能将赛斯寄的这封邮件 加密后又成功地解密
现在 就让我们了解 如何利用MailKit的API 来建立像大秘密扩展功能 一样强大的扩展功能 我们就从可提供使用者撰写邮件时的 新功能之撰写扩展功能开始 在macOS Monterey 扩展功能可以通过四种方式 与邮件撰写窗口互动
扩展功能可以在用户编辑 收件人的邮件地址时进行验证 提供检视控制器 内有撰写中邮件的其他内容 在待发邮件上设定其他标头 在使用者寄出邮件前提醒邮件中有误
现在就来看看 要怎么建立撰写扩展功能
从在现有的macOS App 加上新的目标开始 Xcode 13有新的邮件扩展功能 模板 可让你用来开始建立 新的邮件扩展功能目标 在设定时 Xcode会让你选择 你想要建立的扩展功能类别 对于撰写扩展功能 选择 包含撰写会话处理程序功能
在扩展功能目标的Info.plist中 你必须也在MEComposeSession字典中 指定一个图示和描述性工具提示 邮件会使用此图示和工具提示 在撰写窗口中显示工具栏按钮 现在来看看你的扩展功能 主体类别的实作 你的扩展功能的主体类别 必须符合MEExtension通讯协议 MEExtension公开四种扩展功能 每一种扩展功能选用的处理程序方法 对于撰写扩展功能 你的主体类别 必须实作会话方法的处理程序 并传回符合MEComposeSessionHandler 通讯协议的实例 以邮件调用MEComposeSessionHandler 的方法来通知扩展功能 撰写窗口的生命周期 第一个被调用的方法是 ComposeSessionDidBegin 发生在新的撰写窗口被开启时 也有其他方法 会根据使用者的动作而被调用 像是编辑收件人邮件地址或传送邮件
MEComposeSessionHandler中的 所有方法都有一个 MEComposeSession自变量 提供撰写窗口的信息 邮件为每一个邮件撰写窗口 建立唯一的 MEComposeSession实例 它有MEMessage属性 公布编辑中邮件的各种详细数据 你可以利用这个信息自定义 当邮件调用你的扩展功能的 MEComposeSessionHandler方法时 你要提供的回应 让我们来看一个例子 如何用这个方式 来标注收件人的邮件地址
每次在编辑收件人地址时 邮件会调用ComposeSessionHandler的 annotateAddressesForSession 在这个例子中 我们使用MEMessage的 allRecipientAddresses属性 与seth@example.com不相符的 邮件地址会被标注为错误 撰写扩展功能也可以提供检视控制器 显示在邮件的撰写窗口 通过为每个撰写窗口自定义检视控制器 你的检视控制器可以为使用者 提供很有价值的内容 你的扩展功能的检视控制器必须为 MEExtensionViewController的子类别 邮件会调用 MEComposeSessionHandler的 viewControllerForSession方法 要求这个检视控制器的实例
你可以阅读MailKit文件 了解这些撰写API 并开始建立新的工作流程 现在来谈谈邮件动作扩展功能 动作扩展功能可对内送邮件执行动作 帮助使用者管理他们的收件匣 在macOS Monterey 我们公布扩展功能 可以对新邮件执行的三种动作类别 动作扩展功能可以修改读取状态 在内送邮件加上旗标 将邮件移至系统信箱 例如:垃圾邮件、垃圾桶或封存 或当邮件列表显示邮件时 为邮件加上颜色 当你在建立邮件扩展功能目标时 可以选取包含邮件动作处理程序 增加邮件动作的支持 和撰写扩展功能很像 对于动作扩展功能 你必须通过实现邮件动作的处理程序 传回邮件动作的处理程序 在这个例子中 主体类别通过采用 MEMessageActionHandler 也作为动作处理程序 你的动作扩展功能 必须实作邮件方法 MEMessageActionHandler的 decideAction 邮件的DecideAction伴随 MEMessage自变量被调用 这里 我们检查标题 属性是否包含“火星” 如果有 就为邮件加上红色 请注意几个有关动作处理程序的事项 邮件为每封它下载的新邮件 甚至在收件匣出现电子邮件之前 邮件调用电子邮件处理 例程的decideAction 邮件首次为了电子邮件方法调用 扩展功能decideAction时 MEMessage实例 只会有一个邮件标题的子集 你可以根据可用的标题提供决策 例如为邮件加上颜色 一旦邮件在电子邮件上套用这个动作 你就可以在收件匣看到 在一些情况下 你需要电子邮件的 完整内文和标题 来回传适当的决策 在这个案例中 电子邮件方法的 decideAction 可以传回invokeAgainWithBody决策 这会致使邮件在再次 叫用电子邮件方法的 处理程序的decideAction 之前 撷取完整的邮件内文和标题 你现在可以在它出现在收件匣之前 传回一个更准确的决策 现在我把时间交给赛斯 他会教你如何建立 内容阻挡和安全性扩展功能 亚博拉许 谢谢 首先 我要详细示范如何新增 内容阻挡器扩展功能 内容阻挡器连结邮件的WebKit设定 让电子邮件检视允许扩展功能 根据电子邮件HTML内的触发程序 封锁载入的内容 这允许扩展功能根据HTML准则 例如URL 阻挡载入的内容 在这个例子中 扩展功能可以 根据扩展功能的内容规则列表 的规则 阻挡加载远程影像 当你在建立邮件扩展功能目标时 可以选取包含内容阻挡器 为阻挡内容增加支持 接着 你为扩展功能主体类别中的 内容阻挡器回传处理程序 在这个例子中 主体类别采用 MEContentBlocker通讯协议 所以它回传本身 内容规则列表是指定 使用和Safari内容阻挡器相同的语法 所以 如果你已经有 Safari内容阻挡器扩展功能 的内容规则列表 你的邮件应用程序扩展功能 也可以使用相同的规则 你可以参考 《Webkit 内容阻挡器简介》 文件 了解如何 建立内容规则列表 当你的规则列表完成之后 可以在 contentRulesJSON方法回传 提供给邮件 这个方法接受内容规则列表 JSON的资料解密 以上就是邮件内容阻挡器的介绍 最后 我们来看邮件安全性扩展功能 邮件安全性功能给予扩展功能 加密及解密已加密的电子邮件的能力 扩展功能也可以为电子邮件签名 并提供检视已签名邮件的凭证的方式 当你在建立邮件扩展功能目标时 可以选取包含邮件安全性处理程序 增加邮件安全性的支持 接着 你需要从你的扩展功能 回传支持我们扩展功能主体类别中 MEMessageSecurityHandler 通讯协议的处理程序 在这个例子中 扩展功能的主体类别 也采用MEMessageSecurityHandler 通讯协议 所以它传回自身 现在来看看 如何为撰写中的电子邮件加密 为电子邮件加密分成两个部分 第一部分在撰写电子邮件时 协助驱动用户界面 这让扩展功能显示它是否能 为目前电子邮件加上签名及加密 下一个部分就是在传送电子邮件时 确实为电子邮件加密并签名 撰写邮件时 邮件会将电子邮件 包含寄件人和目前收件人清单 传送到扩展功能 接着 扩展功能可以决定 它是否能为电子邮件签名或加密 根据扩展功能传回的内容 邮件会依是否能为 电子邮件签名和加密的状况 反白锁定和凭证图示
每当变更寄件人或收件人 邮件会 调用扩展功能的 电子邮件安全性处理程序上的 getEncodingStatus方法 扩展功能会验证它 是否可以为电子邮件签名并加密 并将目前加密状态传回至邮件 这里的例子正导入 ExampleEncoder 确实检查电子邮件的加密状态 一旦可用 电子邮件安全性处理程序 就会传回状态 接着 当电子邮件寄出后 邮件会取得 RFC822电子邮件数据 并将它传递给扩展功能 扩展功能会依要求 为电子邮件签名并加密 并将已签名并加密的 RFC822数据回传至邮件 邮件接着会将此数据 传送至外寄服务器
当准备好要传送电子邮件时 邮件使用encodeMessage方法 将目前的电子邮件传递至扩展功能的 电子邮件安全性处理程序 扩展功能的电子邮件安全性处理程序 会传回已加密的电子邮件 在这个例子中 我们再次使用 ExampleEncoder 确实为电子邮件加密 电子邮件安全性处理程序 传回已加密的邮件 为电子邮件解密的运作方式 很类似 但却是反向进行 检视电子邮件时 邮件会将 已加密的RFC822邮件信息 传送至扩展功能 扩展功能会为电子邮件解密成非加密 或已签名的RFC822数据 并传回至邮件 邮件接着会显示已解密的电子邮件
当邮件准备好要为电子邮件解密时 会对扩展功能的安全性处理程序调用 调用decodedMessage方法 如果扩展功能可以为电子邮件解密 就会进行解密并传回 已解密的RFC822电子邮件 如果为电子邮件解密 不需要用到扩展功能 那么扩展功能就会迅速传回nil 检视电子邮件时 可判定它是否已签名且加密 对于已签名的邮件 在签名人标签旁可点击签名人凭证 以检视寄件人的凭证信息 邮件允许扩展功能提供自己的 检视控制器 转译此凭证信息 扩展功能为已解密邮件的 电子邮件的一部分 可传回邮件签名人的集合 当签名人在邮件检视时 会显示提供的标签 为了显示签名的凭证 扩展功能也可显示内容属性和 任何它可能需要的信息 点击凭证图示时 邮件从扩展功能要求ViewController 并将目前电子邮件的 签名人集合传递给它 在最初为电子邮件解密时 这些签名人就由扩展功能传回至邮件 检视控制器必须是 MEExtensionViewController的子集合 以上就是 电子邮件安全性扩展功能的介绍 邮件扩展功能是可以让你强化 邮件体验新颖又强大的方式 我们很期待看到你们利用 这些邮件功能来建立很棒的新产品 而且我们想要听到你的意见反映 所以请寄信给我们 或在开发者论坛张贴信息 这些例子显示邮件应用程序 扩展功能的强大功能 我们建立了撰写扩展功能 来验证收件人 动作扩展功能为内送邮件加上颜色 我们看见内容阻挡器阻挡远程影像 最后 我们看到为邮件新增自定义的 加密和解密功能有多么轻松 在这支影片中 我们介绍 建立邮件应用程序扩展功能的方法 我们期待看到你运用邮件 做出很酷的东西 所以开始动手建立一些 很棒的新邮件应用程序扩展功能吧 感谢你的收看
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。