CompleteRequest后未定义iOS应用程序扩展javascript参数
我正在制作一个CompleteRequest后未定义iOS应用程序扩展javascript参数,javascript,c#,ios,xamarin,xamarin.ios,Javascript,C#,Ios,Xamarin,Xamarin.ios,我正在制作一个iOS操作应用程序扩展,在monotouch中调用CompleteRequest方法后,我无法访问javascript文件中的finalize()函数中的数据。我的javascript文件中的run()方法工作得很好,因为我可以像中一样获取页面url 这是我的代码: NSDictionary itemData = new NSDictionary(new NSString("bgColor"),new NSString("red")); var resultsDictionary
iOS操作应用程序扩展
,在monotouch中调用CompleteRequest
方法后,我无法访问javascript文件中的finalize()
函数中的数据。我的javascript文件中的run()方法工作得很好,因为我可以像中一样获取页面url
这是我的代码:
NSDictionary itemData = new NSDictionary(new NSString("bgColor"),new NSString("red"));
var resultsDictionary = new NSDictionary(NSJavaScriptExtension.FinalizeArgumentKey, itemData);
var resultsProvider = new NSItemProvider(resultsDictionary, "kUTTypePropertyList");
var resultsItem = new NSExtensionItem();
resultsItem.Attachments = new NSItemProvider[] { resultsProvider };
ExtensionHelper.ExtensionContext.CompleteRequest(new NSExtensionItem[] { resultsItem }, null);
在我的javascript文件中:
var MyExtensionJavaScriptClass = function() {};
MyExtensionJavaScriptClass.prototype = {
run: function(arguments) {
// This works completely fine
arguments.completionFunction({"baseURI": document.baseURI});
},
finalize: function(arguments) {
console.log(arguments["bgColor"]); // Undefined
document.body.style.backgroundColor = arguments["bgColor"];
}
};
var ExtensionPreprocessingJS = new MyExtensionJavaScriptClass;
当我将finalize函数的arguments变量转储到控制台时,它看起来像一个空对象:
Object
__defineGetter__: function __defineGetter__() {
__defineSetter__: function __defineSetter__() {
__lookupGetter__: function __lookupGetter__() {
__lookupSetter__: function __lookupSetter__() {
constructor: function Object() {
hasOwnProperty: function hasOwnProperty() {
isPrototypeOf: function isPrototypeOf() {
propertyIsEnumerable: function propertyIsEnumerable() {
toLocaleString: function toLocaleString() {
toString: function toString() {
valueOf: function valueOf() {
__proto__: Object
以下是simulator system.log包含的内容:
MobileSafari[64987]: completed request - items: (
"<NSExtensionItem: 0x7d798940> - userInfo: {\n NSExtensionItemAttachmentsKey = (\n \"<NSItemProvider: 0x7d78f910> {types = (\\n kUTTypePropertyList\\n)}\"\n );\n}"
)
MobileSafari[64987]:已完成的请求-项目:(
“-userInfo:{\n扩展项附件斯基=(\n\“{types=(\\n kUTTypePropertyList\\n)}\”\n);\n}”
)
显然,Xamarin.iOS有一些无效代码
如果您查看中的两个示例,您会发现它们没有使用
“kUTTypePropertyList”
作为标识符,而是使用常量kUTTypePropertyList
。通过一点研究,我在Xamarin中找到了等价物:MobileCoreServices.UTType.PropertyList
。更换它将解决此问题。谢谢您的帮助。