我想阻止我的应用使用扩展机制将其内容分享给某些其他应用.例如,我希望用户能够共享链接,但不能使用Gmail应用.
我对这部纪录片的理解是:以下内容应该有效:
// vieController previously initialised like this: UIActivityViewController(activityItems: [provider], applicationActivities: nil)
viewController.excludedActivityTypes = ["com.google.Gmail.ShareExtension"]
Run Code Online (Sandbox Code Playgroud)
这不起作用.我错过了什么吗?非Apple活动类型是否不适用于此机制?
我希望根据脚本的父App设置扩展Bundle标识符。(因此,我可以重复使用扩展,而无需复制扩展目标。
现在,扩展名已硬编码为此-
com.XXXXXX.FirstTargetName.QOD-Notification-Extention
Run Code Online (Sandbox Code Playgroud)
我希望创建一个在构建扩展时运行的脚本,并将捆绑包标识符动态设置为其他目标名称。
我可以获取任何环境变量来获取父应用程序目标名称。
谢谢
我正在开发iMessage Extension,但是我面临一些UI问题。但是我无法像iOS应用程序那样调试UI。
作为扩展名运行com.apple.MobileSMS(iMessage App容器)。那么,有什么方法可以调试iMessage Extension的UI?
我在iOS应用程序中有一个操作扩展,我只希望在用户共享单个图像时可用.NSExtension我的关键info.plist看起来像这样.
<key>NSExtension</key>
<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>NSExtensionActivationRule</key>
<dict>
<key>NSExtensionActivationSupportsImagesWithMaxCount</key>
<integer>1</integer>
</dict>
</dict>
<key>NSExtensionMainStoryboard</key>
<string>MainInterface</string>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.ui-services</string>
</dict>
Run Code Online (Sandbox Code Playgroud)
我使用的唯一激活规则是NSExtensionActivationSupportsImagesWithMaxCount值为1.但是,在分享其他内容时,扩展程序仍会显示.例如,当我点击Safari中的操作按钮时,它会显示出来.
在Safari的情况下,没有图像被拉出NSExtensionContext.
任何人都知道如何让我的扩展程序在这些情况下不显示?
我使用扫描按钮创建了键盘扩展名,以在包含的应用程序中打开条形码扫描仪。扫描完成后,它应导航回到初始应用程序,并且条形码数据应设置为启动键盘的文本字段的文本,然后单击扫描按钮。
有这个应用程序Scandit Wedge用同样的方式做。但我找不到实现相同目标的方法。请参考下面的GIF。
https://s3.amazonaws.com/id123-dev-ios/scandit.gif
任何帮助将非常感激。
deep-linking ios swift ios-keyboard-extension ios-extensions
我正在尝试调试iOS应用扩展,我所能做的就是设置断点,但是能够打印到控制台会很好。
Xcode 9有可能吗?
或者至少在某处读取它,也许是一个文件?
我去了“设备和模拟器”中查看设备的日志,但是找不到我从iOS应用程序扩展中打印的内容。
我正在创建Today扩展。我已经添加了所有必要的文件,并得到了一堆有关的编译错误
具有这些依赖关系的文件已内置到我的应用程序中(我的网络层等上的错误处理程序),我知道它们不会在Today Extension中使用,但是为了完全摆脱这些文件中的依赖关系,需要重构整个应用程序。有没有解决的办法?
我的代码是Swift,所以我也不能使用编译器宏来避免执行这些代码行。
#if!TARGET_IS_TODAY_EXTENSION #endif
我正在为我的应用http://budgt.ch创建一个今天的小部件,因为一些用户要求快速访问关键功能.
(初步)扩展在iOS模拟器上正常工作,安装如下:
1)安装最新的容器应用2)使用'today'作为容器安装扩展
但是:我似乎无法在物理设备上显示扩展(我目前正在使用iPhone 6进行测试).
什么想法可能是错的?
我正在编写一个在 iOS 9 中发布的 NetworkExtension 框架中扩展的 iOS 扩展。NEPacketTunnelProvider我遇到了这样的情况:一旦使用的内存达到 6MB,iOS 就会终止该扩展。
在常规 iOS 应用程序中,有两种方法可以检测内存警告并采取措施。通过[UIApplicationDelegate applicationDidReceiveMemoryWarning:(UIApplication*)app]或[UIViewController didReceiveMemoryWarning]
是否有类似的方法来检测扩展中的内存警告?我已经搜索了 iOS 扩展文档,但到目前为止一无所获。
我创建了一个简单的 iOS 框架 Swift 项目,并添加了一个Logger带有单个存根方法的Swift 类log(_:)
class Logger: NSObject {
func log(_ message:String) {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
类Logger和log方法是框架内部的,通常构建不会将它们暴露给ObjC. 但是,如果我在框架目标的常规设置中选中“仅允许应用程序扩展 API”,则生成的内容MyFramework-Swift.h现在包含类和方法声明,这意味着两者对框架的使用者都是可见的,就像它们被声明为公共一样:
SWIFT_CLASS("_TtC9Framework6Logger")
@interface Logger : NSObject
- (void)log:(NSString * _Nonnull)message;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end
Run Code Online (Sandbox Code Playgroud)
有人可以解释一下为什么吗?提前致谢!
ios-extensions ×10
ios ×9
swift ×4
objective-c ×2
xcode ×2
deep-linking ×1
ios10 ×1
sharing ×1
swift3 ×1