我正在制作 iOS Action App Extension ,但在调用 CompleteRequest 后,我无法访问 javascript 文件中 finalize() 函数中的数据> 单点触控方法。我的 javascript 文件中的 run() 方法工作正常,因为我能够像在 apple documentation 中一样获取页面 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
这是模拟器 system.log 包含的内容:
MobileSafari[64987]: completed request - items: (
"<NSExtensionItem: 0x7d798940> - userInfo: {\n NSExtensionItemAttachmentsKey = (\n \"<NSItemProvider: 0x7d78f910> {types = (\\n kUTTypePropertyList\\n)}\"\n );\n}"
)
Best Answer-推荐答案 strong>
显然,Xamarin.iOS documentation on app extensions有一些无效的代码。
如果您查看 Swift 中的几个示例,您可以看到他们没有使用 "kUTTypePropertyList" 作为标识符,而是使用常量 kUTTypePropertyList 。通过一些研究,我在 Xamarin 中找到了等效项:MobileCoreServices.UTType.PropertyList 。更换它会解决问题。
关于javascript - iOS App Extension javascript 参数在 CompleteRequest 之后未定义,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/32658492/
|