标签: ios-extensions

始终为嵌入式二进制签名证书签署'Ad Hoc Code'

我有两个目标,主要目标和扩展目标.现在,当我尝试存档应用程序时,Xcode失败并出现以下错误:

error: Embedded binary is not signed with the same certificate as the parent app. Verify the embedded binary target's code sign settings match the parent app's.

        Embedded Binary Signing Certificate:    - (Ad Hoc Code Signed)
        Parent App Signing Certificate:     iPhone Distribution: ***. (EAA28CVMQM)
Run Code Online (Sandbox Code Playgroud)

所以我Build Settings - Code Signing一次又一次检查确保Embedded binary is signed with the same certificate as the parent app,

在此输入图像描述

在此输入图像描述

或者如下设置:

在此输入图像描述

他们都失败了同样的原因.无论我如何更改代码签名设置,Embedded Binary Signing Certificate总是如此(Ad Hoc Code Signed).

在这篇文章之前,我已经阅读了这些链接:

Xcode6:嵌入式二进制文件未使用与父应用程序相同的证书进行签名

嵌入式二进制文件没有使用与父应用程序相同的证书进行签名,但它们是相同的

http://aplus.rs/2014/embedded-binary-is-not-signed-with-the-same-certificate-as-the-parent-app/ …

xcode code-signing ios provisioning-profile ios-extensions

11
推荐指数
3
解决办法
5713
查看次数

如何在iOS10中使用UNNotification的通知服务扩展

Apple引入了新的扩展名"UNNotificationServiceExtension",但是如何从推送通知中启动它?

我读到服务扩展为有效负载提供端到端加密.

设置推送通知的有效负载需要哪个密钥?

如何识别有效负载以及如何从推送通知启动服务扩展?

push-notification ios ios-extensions ios10

11
推荐指数
1
解决办法
1万
查看次数

iOS共享扩展程序在Swift中抓取URL

我正在尝试在swift中创建一个iOS共享扩展.当用户在Safari中并打开共享扩展时,我希望能够获取URL并在我的应用程序中使用它.我知道我可以将下面的代码放在ShareViewController的didSelectPost()函数中,以获取用户在共享扩展中输入的文本,但是如何获取用户点击共享时所在网页的URL延期?我对iOS扩展很新,所以任何帮助都会非常感激.

 let shareDefaults = NSUserDefaults(suiteName: "groupName")
 shareDefaults?.setObject(self.contentText, forKey: "stringKey")
 shareDefaults?.synchronize()
Run Code Online (Sandbox Code Playgroud)

ios swift ios-extensions

10
推荐指数
2
解决办法
4631
查看次数

iOS共享扩展程序无法在Chrome中运行

适用于Safari,不适用于Chrome

也许问题很简单而且很愚蠢,但我是iOS开发的新手,我找不到任何正确的解决方案来解决这个问题.

我需要得到:
1)页面网址
2)页面名称

延期

的Info.plist

<dict>
    <key>NSExtensionAttributes</key>
    <dict>
        <key>NSExtensionActivationRule</key>
        <dict>
            <key>NSExrensionActivationSupportsText</key>
            <true/>
            <key>NSExtensionActivationSupportsFileWithMaxCount</key>
            <integer>1</integer>
            <key>NSExtensionActivationSupportsImageWithMaxCount</key>
            <integer>1</integer>
            <key>NSExtensionActivationSupportsMovieWithMaxCount</key>
            <integer>20</integer>
            <key>NSExtensionActivationSupportsWebPageWithMaxCount</key>
            <integer>1</integer>
            <key>NSExtensionActivationSupportsWebURLWithMaxCount</key>
            <integer>0</integer>
        </dict>
        <key>NSExtensionJavaScriptPreprocessingFile</key>
        <string>DemoPreprocessor</string>
    </dict>
    <key>NSExtensionMainStoryboard</key>
    <string>MainInterface</string>
    <key>NSExtensionPointIdentifier</key>
    <string>com.apple.share-services</string>
</dict>
Run Code Online (Sandbox Code Playgroud)

我已经向Chrome添加了更多内容,但它仍无效.对于Safari,这就足够了:

NSExtensionActivationSupportsWebPageWithMaxCount, NSExtensionActivationSupportsWebURLWithMaxCount, NSExrensionActivationSupportsText, NSExtensionJavaScriptPreprocessingFile
Run Code Online (Sandbox Code Playgroud)

我尝试了三种方法,包括和不使用DemoPreprocessor.js.但所有这些都不适用于Chrome:

1. ShareViewController.swift

override func viewDidLoad() {
    super.viewDidLoad()

    let items = extensionContext?.inputItems
    var itemProvider: NSItemProvider?

    if items != nil && items!.isEmpty == false {
        let item = items![0] as! NSExtensionItem
        if let attachments = item.attachments {
            if !attachments.isEmpty …
Run Code Online (Sandbox Code Playgroud)

google-chrome google-chrome-os ios swift ios-extensions

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

iOs Widget后台更新

根据apple关于widgetPerformUpdateWithCompletionHandler:的内容,当窗口小部件不可见时,iOs Widget也可以更新他的内容.

在我的调试会话中,我注意到每当通知中心视图消失时,todayViewController都会被释放,所以我的问题是:

如果取消分配,我的todayViewController如何响应widgetPerfomrUpdateWithComplationHandler?

我需要每小时小部件更新他的内容,如果它不可见,我该怎么做?

iOs小部件生命周期如何?

请帮帮我:)谢谢

cocoa-touch objective-c ios ios8-today-widget ios-extensions

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

如何设置NSExtensionActivationRule谓词?

即使是比我聪明得多的人NSExtensionActivationRule也会找到奥术的语法,但即使像我这样的傻瓜也应该能够复制/粘贴例子,不是吗?不幸的是,我甚至无法让Apple的例子工作.点击共享表按钮(下面的堆栈跟踪)时,我的操作扩展程序的主机应用程序崩溃了.

你应该能够设置NSExtensionActivationRule为字符串,对吗?当我将其设置TRUEPREDICATE为调试目的时,它工作正常.但是,如果我从Apple(稍作修改public.image)中获取这个简单的例子并粘贴它,我就会崩溃:

{extensionItems = ({
    attachments = ({
        registeredTypeIdentifiers = (
            "public.image"
        );
    });
})}
Run Code Online (Sandbox Code Playgroud)

我也试过了这SUBQUERY件事:

SUBQUERY($extensionItem.attachments, $attachment, 
    ANY $attachment.registeredTypeIdentifiers 
    UTI-CONFORMS-TO "public.image").@count >= 1
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想通过使用完全避免这种情况,NSExtensionActivationSupportsImageWithMaxCount但正如这个人发现的那样,似乎没有为jpgs激活它.

无论如何,承诺的堆栈跟踪:

2015-02-21 23:28:08.644 MobileSlideShow[56997:2414043] Communications error: <OS_xpc_error: <error: 0x4c985f4> { count = 1, contents =
    "XPCErrorDescription" => <string: 0x4c9883c> { length = 22, contents = "Connection interrupted" }
}>
2015-02-21 23:28:08.651 MobileSlideShow[56997:2413473] *** Terminating app due to uncaught …
Run Code Online (Sandbox Code Playgroud)

ios ios8 ios-extensions

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

仅使用特定网址共享扩展程序

有没有办法过滤共享扩展程序,以便仅在例如URL域是特定的域时显示?

例如,我想仅在用户共享Google链接时显示我的应用扩展程序:

http://www.google.com/?someQuery

如果我要过滤获取网址,那么下面的代码就足够了:

SUBQUERY (
    extensionItems,
    $extensionItem,
    SUBQUERY (
        $extensionItem.attachments,
        $attachment,
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.url"
    ).@count == $extensionItem.attachments.@count
).@count == 1
Run Code Online (Sandbox Code Playgroud)

在这种情况下,谓词访问$attachmentregisteredTypeIdentifiers属性并对其进行评估.我希望能够将REGEX与内部的值匹配$attachment,如下所示:

SUBQUERY (
    extensionItems,
    $extensionItem,
    SUBQUERY (
        $extensionItem.attachments,
        $attachment,
        ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.url" AND
        ANY $attachment.value MATCHES "^http\:\/\/www\.google\.com\/"
    ).@count == $extensionItem.attachments.@count
).@count == 1
Run Code Online (Sandbox Code Playgroud)

...所以当我的应用程序不支持主机应用程序共享的URL时,我的扩展名将不可见.

PS:请注意,所使用的URL域只是一个示例.当然,真正的一个具有像这样使用的意义.

predicate ios ios-extensions

9
推荐指数
0
解决办法
490
查看次数

即使允许访问文件,startAccessingSecurityScopedResource()也会返回 false

我有一个 iOS 应用程序,它有一个操作扩展来保存文档。

startAccessingSecurityScopedResource()即使我能够访问该文件,该方法在某些情况下也会返回 false。

BOOL success = [originalURL startAccessingSecurityScopedResource];    
if (success) {
    NSFileCoordinator *fileCoordinator = [[NSFileCoordinator alloc] init];
    NSError *error = nil;
    [fileCoordinator coordinateReadingItemAtURL:originalURL options:NSFileCoordinatorReadingForUploading error:&error byAccessor:^(NSURL *newURL) { 
        //My Code
    }
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,观察到以下内容

从 Apple 的照片应用程序共享文件时

originalURL = file:///var/mobile/Media/PhotoData/OutgoingTemp/49152B46-E719-41A5-A5D5-21EAE6254246/RenderedPhoto/IMG_0026.JPG 
Run Code Online (Sandbox Code Playgroud)

从 MS Word App 共享文件时

originalURL = file:///private/var/mobile/Containers/Data/Application/1B0C962F-E7B4-46ED-A9DA-A8213E05A470/tmp/ShareAttachments/%7BC699DC26-37F9-A949-8F69-1F9D6981C4B0%7D/Document.docx
Run Code Online (Sandbox Code Playgroud)

从 Apple 的 Pages 应用程序共享文件时

originalURL = file:///private/var/mobile/Containers/Data/Application/CDBBDC79-02C7-4ABF-A6B9-F38B6540E2B1/Documents/Document%20(1).pages
Run Code Online (Sandbox Code Playgroud)

该标志success位于true第一种情况(照片应用程序)中,但位于false其他两种情况(单词和页面应用程序)中。

如果我删除成功标志检查,我就可以使用 NSFileCoordinator 访问所有三个文件,并且可以将文件复制到我的应用程序中。

因此,我不确定为什么startAccessingSecurityScopedResource()在我显然有权复制文件的情况下该方法返回 false。

动机是使用操作扩展将从文件编辑器应用程序导出的文件保存到我的 iOS 应用程序中。

objective-c ios ios-extensions

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

从我自己的应用程序提供来电的来电显示

我想编写一个应用程序,通过查看我的应用程序中的表(例如SQLite数据库表)来识别传入(未知)调用的电话号码.

我已经使用呼叫目录扩展在iOS中实现了这一点,但对于Android,我能找到的唯一选项是使用带有弹出窗口BroadcastReceiver来显示本地来电屏幕以显示联系信息.

ContactsContract.Directory似乎提供了创建自定义目录的可能性,其中本机调用应用程序可以查找调用者ID.不幸的是,我找不到任何关于如何实现这一目标的好例子.

有没有人知道是否可以使用ContactsContract.Directory实现调用者ID,或者Android中是否存在与Android中的呼叫目录扩展相似的内容?如果是这种情况,示例代码将非常有用.

android contacts ios android-contentprovider ios-extensions

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

在自定义iOS键盘中检测应用程序

如何检测我的自定义键盘使用的应用程序并显示不同的按钮?例如在Twitter中我会将@添加到字符串我发布到输入字段和Reddit/r /

keyboard cocoa-touch objective-c ios ios-extensions

8
推荐指数
2
解决办法
1050
查看次数