Ios 如何在共享扩展视图控制器中获取标题?
我正在我的应用程序中使用共享扩展。我使用它作为UIViewController而不是SLcomposer的子类。在viewDidLoad中,我试图从Ios 如何在共享扩展视图控制器中获取标题?,ios,iphone,ios8-share-extension,Ios,Iphone,Ios8 Share Extension,我正在我的应用程序中使用共享扩展。我使用它作为UIViewController而不是SLcomposer的子类。在viewDidLoad中,我试图从NSItemProvider访问页面中的文本,但它只有一个键,即public url,有谁能告诉我如何在NSItemProvider中实现kUTTypePlainText。我还将NSExtensionActivationSupportsText设置为Boolean,将其类型设置为Boolean,将值设置为YES,我想您必须使用提供的URL请求站点,解
NSItemProvider
访问页面中的文本,但它只有一个键,即public url,有谁能告诉我如何在NSItemProvider
中实现kUTTypePlainText
。我还将NSExtensionActivationSupportsText设置为Boolean,将其类型设置为Boolean,将值设置为YES,我想您必须使用提供的URL请求站点,解析内容并从该字符串中获取标题
顺便说一句:苹果的文档说:
如果您的共享或iOS操作扩展需要访问网页,则必须包含具有非零值的NSExtensionActivationSupportsWebPageWithMaxCount键
请参阅“部分,我想您必须使用提供的URL请求站点,解析内容并从该字符串获取标题 顺便说一句:苹果的文档说: 如果您的共享或iOS操作扩展需要访问网页,则必须包含具有非零值的NSExtensionActivationSupportsWebPageWithMaxCount键
请参阅“一节,您可以使用ExtensionPreprocessingJS来执行此操作 首先,将
NSExtensionJavaScriptPreprocessingFile
键添加到Info.plist中的NSExtensionAttributes
字典中。该值应该是不带扩展名的JavaScript文件名,即MyExtensionJavaScriptClass
然后,在Info.plist中的NSExtensionActivationRule
字典中,将NSExtensionActivationSupportsWebPageWithMaxCount
键的值设置为1(类型编号)
接下来,使用以下代码向扩展添加MyExtensionJavaScriptClass.js
:
-(void)viewDidLoad {
[super viewDidLoad];
NSExtensionItem *item = self.extensionContext.inputItems[0];
NSItemProvider *itemProvider = item.attachments[0];
NSLog(@"%@",itemProvider);
if ([itemProvider hasItemConformingToTypeIdentifier:(NSString *)kUTTypePlainText])
{
[itemProvider loadItemForTypeIdentifier:(NSString *)kUTTypePlainText options:nil completionHandler:^(NSString *item, NSError *error)
{
if (item)
{
textString=item;
}
}];
}
然后在ShareViewController中包含以下功能viewDidLoad
和import MobileCoreServices
var MyExtensionJavaScriptClass = function() {};
MyExtensionJavaScriptClass.prototype = {
run: function(arguments) {
arguments.completionFunction({"title": document.title});
}
};
// The JavaScript file must contain a global object named "ExtensionPreprocessingJS".
var ExtensionPreprocessingJS = new MyExtensionJavaScriptClass;
您可以使用ExtensionPreprocessingJS来实现这一点 首先,将
NSExtensionJavaScriptPreprocessingFile
键添加到Info.plist中的NSExtensionAttributes
字典中。该值应该是不带扩展名的JavaScript文件名,即MyExtensionJavaScriptClass
然后,在Info.plist中的NSExtensionActivationRule
字典中,将NSExtensionActivationSupportsWebPageWithMaxCount
键的值设置为1(类型编号)
接下来,使用以下代码向扩展添加MyExtensionJavaScriptClass.js
:
-(void)viewDidLoad {
[super viewDidLoad];
NSExtensionItem *item = self.extensionContext.inputItems[0];
NSItemProvider *itemProvider = item.attachments[0];
NSLog(@"%@",itemProvider);
if ([itemProvider hasItemConformingToTypeIdentifier:(NSString *)kUTTypePlainText])
{
[itemProvider loadItemForTypeIdentifier:(NSString *)kUTTypePlainText options:nil completionHandler:^(NSString *item, NSError *error)
{
if (item)
{
textString=item;
}
}];
}
然后在ShareViewController中包含以下功能viewDidLoad
和import MobileCoreServices
var MyExtensionJavaScriptClass = function() {};
MyExtensionJavaScriptClass.prototype = {
run: function(arguments) {
arguments.completionFunction({"title": document.title});
}
};
// The JavaScript file must contain a global object named "ExtensionPreprocessingJS".
var ExtensionPreprocessingJS = new MyExtensionJavaScriptClass;