要为 iOS 或 tvOS 创建扩展,必须分两部分进行。第一部分是添加扩展本身以及所需的文件,第二部分是创建扩展所需的函数和宏/常量。
函数和常量是通过占位符文件来添加的,所以你要添加一个占位符,然后按照这里的解释来定义函数和宏。要添加其余的文件,你需要首先在编辑器的附加功能部分勾选iOS 和/或tvOS 复选框,以打开相关的扩展属性窗口(下图是iOS的属性窗口,但tvOS的窗口是完全一样的)。
在这里,你可以提供以下细节。
- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Check if any superclasses implement this method and call it
if([[self superclass] instancesRespondToSelector:@selector(application:willFinishLaunchingWithOptions:)])
return [super application:application willFinishLaunchingWithOptions:launchOptions];
else
return TRUE;
}
代码注入可用于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>
重要 您可以为此创建自己的标记。此类自定义标记必须以 YYIos 或 YYTvos 开头(取决于平台)。
此处的 ${YYIosMyInjectionTag} 部分将替换为扩展的"代码注入"窗口中的 <YYIosMyInjectionTag> </YYIosMyInjectionTag>
您可以在扩展的文件夹中创建一个名为 "iOSProjectFiles" 的文件夹 (与其 .yy 文件一起)。放置在该文件夹中的任何文件都会在编译时移动到生成的 Xcode 项目的根目录,并且也可以如上所述地使用注入标记。
如果你的扩展添加了任何系统框架或第三方框架,这些框架现在将被列在扩展属性窗口中,每个框架旁边都有一个复选框。如果你选中该复选框,你就启用了弱连接,如果你需要用你自己的值 "覆盖 "内含库中的任何符号,这很有用,但应该注意,这样做会减慢连接速度。
关于你为iOS创建原生扩展的信息,请参见 示例代码,关于在扩展中使用CocoaPods的信息,请参见以下指南。