这是截图:
在我的UIActivity的子类中,我重写-activityImage方法以使用我自己的图标作为facebook共享项,但它出现在共享面板中但在MORE列表中消失.
我想要的是
我正在尝试实现以下用户流程:
我尝试了什么
我通过Xcode进行了Share扩展.这NSExtension
是我的部分info.plist
:
<key>NSExtension</key>
<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>NSExtensionActivationRule</key>
<dict>
<key>NSExtensionActivationSupportsWebPageWithMaxCount</key>
<integer>1</integer>
<key>NSExtensionActivationSupportsText</key>
<true/>
<key>NSExtensionActivationSupportsWebURLWithMaxCount</key>
<integer>1</integer>
</dict>
<key>NSExtensionJavaScriptPreprocessingFile</key>
<string>test</string>
</dict>
<key>NSExtensionMainStoryboard</key>
<string>MainInterface</string>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.share-services</string>
</dict>
Run Code Online (Sandbox Code Playgroud)
这是test.js
文件:
var GetURL = function() {};
GetURL.prototype = {
run: function(arguments) {
arguments.completionFunction({"URL": document.URL});
}
};
var ExtensionPreprocessingJS = new GetURL;
Run Code Online (Sandbox Code Playgroud)
我期望得到以下结果:在viewDidLoad
方法中extensionContext?.inputItems
将为我提供几个输入项,通过它我将能够获得所选内容和Web URL.
出了什么问题
在viewDidLoad
方法中,extensionContext?.inputItems
我只提供了一个项目 - 所选内容的纯文本表示(即使我同时选择了图像和文本).我可以使用纯文本,但我需要网页网址.
我的问题
如何在iOS Safari中使用共享扩展程序通过上下文菜单共享所选内容时,如何获取已打开网页的URL?
我正在努力让我的应用程序正确共享URL,以便在共享表中显示"在Safari中打开"和"在Chrome中打开"活动项目.我尝试过几种不同的方式共享URL:
NSURL *data = _article.url;
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[data] applicationActivities:nil];
Run Code Online (Sandbox Code Playgroud)
作为参考,这些是我想要出现的两个活动项目.
我正在为iOS 9+设备开发一个简单的内容拦截器.在阻止广告/跟踪器等方面似乎一切正常,我甚至可以使用共享扩展操作直接从Safari"白名单"网站.
我的问题是,当用户点击操作>我的应用程序共享扩展[将其添加到主应用程序内的列表]时,我想显示一个简单的警报,其中显示"此网站已添加到您的白名单..."几秒钟后消失.
... 我该怎么做呢?
**更新我已经阅读了关于此的所有Apples文档,但仍然无法弄明白.这里的帖子确实提到了如何设计简化的UI,但并没有真正涵盖我的情况.
希望有人知道:-)
mobile-safari safari-extension ios ios8-share-extension ios9
我在共享扩展中遇到AFNetworking的问题.在didSelectPost
,我打电话:
[[AuthClient sharedClient] POST: @"/v1/events"
parameters: params success: ^ (AFHTTPRequestOperation * operation, id responseObject) {
[self.extensionContext completeRequestReturningItems: nil completionHandler: nil];
}
failure: ^ (AFHTTPRequestOperation * operation, NSError * error) {
NSLog(@"error: %@", error);
[self.extensionContext cancelRequestWithError: error];
}
];
Run Code Online (Sandbox Code Playgroud)
[AuthClient sharedClient]
使用单例模式来获得的一个实例AFHTTPSessionManager
与NSURLSessionConfiguration
集与背景标识符.
但是,无论是成功还是失败的回调都被调用,它只是无限期挂起,直到扩展被杀死.有趣的是,HTTP请求在服务器端完成; 完成永远不会被调用.
我希望我的应用程序能够解析笔记应用程序帖子以及其他文本编辑器帖子中的文本,因此我创建了一个共享扩展目标.一切正常,直到我准备发布的应用程序,取代TRUEPREDICATE
NSExtensionActivationRule.
据说,在我的共享扩展目标中,我应该将NSExtensionActivationSupportsText密钥添加到info.plist中的NSExtensionActivationRule,我这样做了,但我的应用扩展程序仍未显示在共享表中.
根据https://developer.apple.com/library/ios/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html我的info.plist应该包含:
<key>NSExtensionAttributes</key>
<dict>
<key>NSExtensionActivationRule</key>
<dict>
<key>NSExtensionActivationSupportsText</key>
<integer>1</integer>
</dict>
</dict>
Run Code Online (Sandbox Code Playgroud)
我尝试启用其他类型,如附件,文件,网页,但没有效果.
我有以下代码来读取传递的URL.我正在使用Pocket
应用程序进行测试,虽然hasItemConformingToTypeIdentifier
返回YES kUTTypeURL
,尝试加载它返回错误而不是说明
"意外的价值等级."
.如果我尝试将其作为id<NSSecureCoding>
项目和调试加载,我发现传入的对象确实只是页面的标题而不是URL.我如何阅读URL?
NSURL *pageURL = nil;
for (NSExtensionItem *item in self.extensionContext.inputItems) {
for (NSItemProvider *itemProvider in item.attachments) {
if ([itemProvider hasItemConformingToTypeIdentifier: (NSString*) kUTTypeURL]) {
[itemProvider loadItemForTypeIdentifier:(NSString*) kUTTypeURL options:nil completionHandler:^(id <NSSecureCoding> urlItem, NSError *error) {
if ([((NSObject*)urlItem) isKindOfClass: [NSURL class]]) {
pageURL = [((NSURL*)urlItem) absoluteString];
}
}];
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试从共享选项中删除我自己的应用程序共享扩展。我在网上找不到任何关于此的文档。任何帮助,将不胜感激。
这是我到目前为止:
activityVC.excludedActivityTypes = [UIActivityTypeAirDrop, UIActivityTypeAddToReadingList,"com.Final.Giftr.Giftr-ShareExtension"]
Run Code Online (Sandbox Code Playgroud)
空投和添加到阅读列表按预期工作。
我正在使用a UIActivityViewController
来让用户分享使用我的应用创建的照片和视频.我附加了两个UIActivityItemProviders
:一个用于媒体,一个用于默认文本("Created with ...").
这适用于我测试的所有共享扩展 - 除了WhatsApp.WhatsApp只显示消息对话框中的文本 - 没有照片或视频.但是,当我将文本留空时,它将显示媒体文件.
有什么方法可以通过WhatsApp与默认文本/标题共享照片或视频吗?
如何从扩展中打印Xcode的lldb 调试器中的日志?