iOS / tvOS 扩展

要为 iOS 或 tvOS 创建扩展,必须分两部分进行。第一部分是添加扩展本身以及所需的文件,第二部分是创建扩展所需的函数和宏/常量。

函数和常量是通过占位符文件来添加的,所以你要添加一个占位符,然后按照这里的解释来定义函数和宏。要添加其余的文件,你需要首先在编辑器的附加功能部分勾选iOS 和/或tvOS 复选框,以打开相关的扩展属性窗口(下图是iOS的属性窗口,但tvOS的窗口是完全一样的)。

iOS Editor

在这里,你可以提供以下细节。

代码注入

代码注入可用于iOS/tvOS扩展,方法与Android扩展页面上的描述相同:见代码注入

以下标签可用于iOS和tvOS平台。

YYIosPlist
YYIosEntitlements
YYIosCocoaPods
YYIosCocoaPodsDependencies
YYIosBuildRules
YYIosBuildSettingsInjection
YYIosScriptPhase
YYIosCFBundleURLSchemesArray
YYIosLSApplicationQueriesSchemesArray
YYIosPrivacyManifest

YYTvosPlist
YYTvosEntitlements
YYTvosCocoaPods
YYTvosCocoaPodsDependencies
YYTvosBuildRules
YYTvosBuildSettingsInjection
YYTvosScriptPhase
YYTvosCFBundleURLSchemesArray
YYTvosLSApplicationQueriesSchemesArray
YYTvosPrivacyManifest

代码被注入的运行时位置将取决于标签的类型:

标签类型注入路径
Entitlements{RUNTIME}\ios\TemplateProject\${YYXCodeProjName}\
${YYXCodeProjName}.entitlements
info.plist{RUNTIME}\ios\TemplateProject\${YYXCodeProjName}\
Supporting Files\${YYXCodeProjName}-Info.plist
infoPlist.strings{RUNTIME}\ios\TemplateProject\${YYXCodeProjName}\
en.lproj\InfoPlist.strings
project.pbxproj{RUNTIME}\ios\TemplateProject\${YYXCodeProjName}.xcodeproj\
project.pbxproj
xcscheme{RUNTIME}\ios\TemplateProject\${YYXCodeProjName}.xcodeproj\
xcshareddata\xcschemes\${YYXCodeProjName}.xcscheme
PrivacyManifest{RUNTIME}\ios\TemplateProject\${YYXCodeProjName}\Supporting Files\PrivacyInfo.xcprivacy

注意 这些路径仅适用于 VM。 对于 YYC,注入的代码将进入 {RUNTIME}\yyc 目录,其中的路径可能与 VM 的路径不同。

也可以有条件地注入标记。请参阅:条件注入

文件注入

在添加到扩展名的文本文件中(请参阅:添加文件),您可以通过在 ${ } 中提及标记来从"代码注入"窗口注入代码。例如,假设您有一个包含以下内容的文件:

<?xml version="1.0" encoding="UTF-8"?>
<dict>

    ${YYIosMyInjectionTag}

</dict>

重要 您可以为此创建自己的标记。此类自定义标记必须以 YYIosYYTvos 开头(取决于平台)。

此处的 ${YYIosMyInjectionTag} 部分将替换为扩展的"代码注入"窗口中的 <YYIosMyInjectionTag> </YYIosMyInjectionTag>

自定义文件

您可以在扩展的文件夹中创建一个名为 "iOSProjectFiles" 的文件夹 (与其 .yy 文件一起)。放置在该文件夹中的任何文件都会在编译时移动到生成的 Xcode 项目的根目录,并且也可以如上所述地使用注入标记。

其他资料

如果你的扩展添加了任何系统框架或第三方框架,这些框架现在将被列在扩展属性窗口中,每个框架旁边都有一个复选框。如果你选中该复选框,你就启用了弱连接,如果你需要用你自己的值 "覆盖 "内含库中的任何符号,这很有用,但应该注意,这样做会减慢连接速度。

关于你为iOS创建原生扩展的信息,请参见 示例代码,关于在扩展中使用CocoaPods的信息,请参见以下指南。