标签: ios8-share-extension

UIActivityViewController未在iOS8的"更多"列表中显示我的自定义活动图像

这是截图: 在此输入图像描述

在我的UIActivity的子类中,我重写-activityImage方法以使用我自己的图标作为facebook共享项,但它出现在共享面板中但在MORE列表中消失.

在此输入图像描述

ios ios8 ios8-share-extension ios8-extension

13
推荐指数
2
解决办法
1716
查看次数

iOS Share Extension:通过Safari中的上下文菜单共享页面的URL

我想要的是

我正在尝试实现以下用户流程:

  1. 用户正在iOS Safari中浏览网页.
  2. 用户选择一些内容(文本和图像)并等待上下文菜单出现.
  3. 用户选择"共享..."项.
  4. 用户从底部出现的共享菜单中选择我的App Extension.
  5. 所选内容和网页URL通过HTT呼叫共享给远程服务器.

我尝试了什么

我通过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?

ios swift ios8-share-extension share-extension

13
推荐指数
2
解决办法
4393
查看次数

使用UIActivityViewController共享URL时,如何显示"在Safari中打开"图标?

我正在努力让我的应用程序正确共享URL,以便在共享表中显示"在Safari中打开"和"在Chrome中打开"活动项目.我尝试过几种不同的方式共享URL:

NSURL *data = _article.url;
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[data] applicationActivities:nil];
Run Code Online (Sandbox Code Playgroud)
  • 使用[NSData dataWithContentsOfURL:]作为NSData项目;
  • 作为NSURL
  • 使用[myURL absoluteString]作为NSString;
  • 结合NSURL(网址)和NSString(标题)

作为参考,这些是我想要出现的两个活动项目.

在此输入图像描述

ios uiactivityviewcontroller ios8-share-extension

12
推荐指数
2
解决办法
3320
查看次数

iOS在使用我的应用程序的共享扩展时在Safari中显示UIAlert

我正在为iOS 9+设备开发一个简单的内容拦截器.在阻止广告/跟踪器等方面似乎一切正常,我甚至可以使用共享扩展操作直接从Safari"白名单"网站.

我的问题是,当用户点击操作>我的应用程序共享扩展[将其添加到主应用程序内的列表]时,我想显示一个简单的警报,其中显示"此网站已添加到您的白名单..."几秒钟后消失.

... 我该怎么做呢?

**更新我已经阅读了关于此的所有Apples文档,但仍然无法弄明白.这里的帖子确实提到了如何设计简化的UI,但并没有真正涵盖我的情况.

希望有人知道:-)

mobile-safari safari-extension ios ios8-share-extension ios9

10
推荐指数
1
解决办法
250
查看次数

使用AFNetworking无法获得成功/失败的共享扩展回调

我在共享扩展中遇到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]使用单例模式来获得的一个实例AFHTTPSessionManagerNSURLSessionConfiguration集与背景标识符.

但是,无论是成功还是失败的回调都被调用,它只是无限期挂起,直到扩展被杀死.有趣的是,HTTP请求在服务器端完成; 完成永远不会被调用.

ios afnetworking afnetworking-2 ios8-share-extension

10
推荐指数
1
解决办法
460
查看次数

IOS Share扩展:如何阅读笔记帖子

我希望我的应用程序能够解析笔记应用程序帖子以及其他文本编辑器帖子中的文本,因此我创建了一个共享扩展目标.一切正常,直到我准备发布的应用程序,取代TRUEPREDICATENSExtensionActivationRule.

据说,在我的共享扩展目标中,我应该将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)

我尝试启用其他类型,如附件,文件,网页,但没有效果.

ios ios-app-extension ios8-share-extension

9
推荐指数
1
解决办法
2359
查看次数

共享扩展loadItemForTypeIdentifier返回NSURL的错误

我有以下代码来读取传递的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)

objective-c ios ios8-share-extension

8
推荐指数
1
解决办法
3120
查看次数

从 UiActivityViewController 中排除自己的应用程序

我正在尝试从共享选项中删除我自己的应用程序共享扩展。我在网上找不到任何关于此的文档。任何帮助,将不胜感激。

这是我到目前为止:

activityVC.excludedActivityTypes = [UIActivityTypeAirDrop, UIActivityTypeAddToReadingList,"com.Final.Giftr.Giftr-ShareExtension"]
Run Code Online (Sandbox Code Playgroud)

空投和添加到阅读列表按预期工作。

ios uiactivityviewcontroller swift ios8-share-extension

8
推荐指数
1
解决办法
1161
查看次数

使用WhatApp Share Extension共享文本和媒体

我正在使用a UIActivityViewController来让用户分享使用我的应用创建的照片和视频.我附加了两个UIActivityItemProviders:一个用于媒体,一个用于默认文本("Created with ...").

这适用于我测试的所有共享扩展 - 除了WhatsApp.WhatsApp只显示消息对话框中的文本 - 没有照片或视频.但是,当我将文本留空时,它将显示媒体文件.

有什么方法可以通过WhatsApp与默认文本/标题共享照片或视频吗?

ios whatsapp ios8-share-extension

7
推荐指数
1
解决办法
5136
查看次数

如何调试ios共享扩展?

如何从扩展中打印Xcode的lldb 调试器中的日志?

xcode ios lldb swift ios8-share-extension

7
推荐指数
3
解决办法
6049
查看次数