问题标签 [ios-extensions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
177 浏览

ios - 使用 PhotoEditing Extension 对图像进行效果

我想在 PhotoEditing Extension 中设置裁剪图像

我提供了用于裁剪和旋转设施的设施,现在我想在模拟器的照片上产生这种效果

0 投票
2 回答
2726 浏览

xcode - 如何添加应用程序组 iOS 8 扩展?

我有一个奇怪的问题:在我正在工作的项目中,我们必须引入 Share 扩展。我现在遇到的问题是无法添加应用程序组。
当我激活它时,它表明我在https://www.dropbox.com/s/sp7tqbv9x6q175i/Screenshot%202015-01-07%2009.56.34.png?dl=0遇到问题。如果我对主应用程序目标使用不同的包 ID,它可以工作,但我必须使用这个包 ID。如果我尝试添加应用程序组https://www.dropbox.com/s/7pi1n4j8xajngvm/Screenshot%202015-01-07%2010.03.44.png?dl=0会出现相同的错误,但会出现一行。我尝试从应用程序 ID 的供应门户更改此设置,可以正常工作并添加它而没有问题。

谢谢你。

0 投票
1 回答
1981 浏览

ios - iOS8 扩展:在容器和扩展之间共享图像

我正在制作一个 iOS 8 扩展。这是我正在尝试做的事情:用户从容器应用程序的照片库中选择图像,这些图像将与扩展程序共享并供进一步使用。

现在我是这样做的(如果你不想看这部分,请跳过下面阅读实际代码):使用 App Group 和 NSUserDefaults 共享数据。将 UIImage 转换为 NSData,然后将所有图像保存在 NSArray 中,然后将数组保存到 NSDictionary (我有很多数组,这是我组织它们的方式 - 所以我必须将它们保存到字典中),最后将字典保存到用户默认。

这是编码:

当我想检索图像时:

convertArray 将是我想要获得的图像数组。

显然,如果我这样做,会有很多问题。比如两个大问题:

  • 这样做会占用大量资源,包括内存。实际完成该过程大约需要半分钟。如果我有一个包含大约 20 张图像的数组,我会收到大约 3 次“didRecieveMemoryWarning”(我使用 iPad mini 作为测试设备)。有时数据没有正确保存。在 viewController 弹出后(这意味着它运行到我存储代码的最后一行),我刚刚保存到 UserDefault 中的数组得到 nil!我确定我的编码工作正常,这个问题是由内存不足引起的,因为如果数组中的图像少于 15 个,我可以完美地保存和检索它们。

  • 很难将新图像保存到以前保存的数组中。当我想这样做时,我必须检索以前的数组并将新的图像数据添加到该数组中,然后将新数组保存到 UserDefault 中。如前所述,将数组保存到 UserDefault 会占用大量内存。

所以我的问题非常直接和具体:

  1. 还有其他方法可以将图像从一个目标传输到另一个目标吗?换句话说:如何将图像从容器应用程序传输到扩展程序?
  2. 如果没有,有什么方法可以解决我的代码中的问题吗?这是一个正确的方法吗?

这些都是我想问的,但是如果您也可以为我回答以下问题,那就太好了:

  1. 为什么我会在一个保存过程中收到多个“didRecieveMemoryWarning”?当系统收到内存警告时,会立即停止动作吗?
  2. (只是为了确保)对所有图像(包括 PNG 和 JPG)使用 UIImagePNGRepresentation 是否安全?

谢谢你。

0 投票
0 回答
70 浏览

iphone - 是否可以在 iOS 8 的照片编辑扩展中使用相机?

我正在尝试创建一个简单的照片编辑扩展。我想使用带有滤镜的自定义相机作为扩展,但 Apple 文档建议照片编辑扩展使用照片库中的资产。这是扩展的限制吗?如果没有,你能指导我如何做到这一点吗?非常感谢!

0 投票
2 回答
1741 浏览

xcode6 - 如何使用框架、扩展和 CocoaPods 构建 Xcode 项目

注意:这是这个问题的一个更抽象和简化的子集

随着触控框架、扩展Apple Watch Xcode 6 项目和工作区的添加,变得越来越复杂。

如果您将CocoaPods添加到这种组合中,事情开始变得几乎无法管理。

我将如何构建具有以下目标和依赖关系的 Xcode 项目/工作区?(假设:我对所有组件使用 Git,对所有第三方代码使用 CocoaPods,我使用 Xcode 6)。

  • 我的酷应用
    • 通过 CocoaPods 实现的几个 3rd 方 UI 库
    • MyCoolNetworking.framework,我作为 Git 子模块创建的框架(项目)
      • 通过 CocoaPods 的 AFNetworking
      • 通过 CocoaPods 的其他数据处理代码
    • MyCoolAppBusinessLogic.framework,由应用和所有扩展使用(下)
      • 包括来自 CocoaPods 的一些代码,这些代码对应用程序和扩展程序很常见
    • MyCoolToadyView,TodayView 扩展目标
    • MyCoolWatch,Apple Watch 扩展目标

如您所见,这是一个复杂的结构,包括几个 CocoaPods 实例。有关如何解决任何或所有这些问题的任何建议都会有所帮助。

(我的计划是写一些我自己的想法,然后综合其他人的答案,这无疑是一个活生生的文件)。

0 投票
3 回答
9617 浏览

ios - 今日小工具中的“无法加载”消息

我介于我的小部件开发之间。因为我们已经将我们的应用程序与小部件集成放在了一起。但是现在,我在 iOS 中遇到了今天的小部件的问题。我已经为两种情况编写了代码。第一次当小部件在应用程序启动时首次加载时,它会调用 Web 服务并通过 Internet 获取数据,然后我们将它们存储到用户默认值中以供以后使用。

现在,当下次用户下拉通知菜单时,我们首先向用户显示我们旧存储的内容,然后我们从 Web 服务中获取它并存储在用户默认值中,然后再次重新加载表。

对于上述操作,在某些情况下,我面临表格内容大小问题、闪烁问题和“无法加载”消息。

现在看看下面的代码,我在下面的方法中进行网络调用,在网络服务响应之后,我只处理完成处理程序。

所以,请与我分享您的经验和想法。

0 投票
1 回答
220 浏览

javascript - iOS 共享扩展禁用预览

我正在为 iOS 中的 Safari 开发共享扩展。我们使用的是 iOS 的普通 UI,因此扩展了 SLComposeServiceViewController。我还使用 javascript 来读取页面内容并设置一些参数。如果不包含 JS 文件,则 UI 可以正常显示预览。但是一旦我包含了 JS 文件,预览就没有显示出来。有谁知道为什么这不会出现?info.plist 中是否有启用预览的配置?

0 投票
0 回答
166 浏览

ios - 您可以将位置用作 iOS 应用程序扩展的激活规则吗?

我正在尝试为想要展示位置的 iOS 应用程序实现扩展。例如,在地图应用程序中,如果您点击分享按钮,则会出现一个菜单,其中包含分享选项(消息、Facebook twitter)和操作选项(打印、添加到收藏夹)。我希望我的扩展出现在操作部分,并且我希望它在存在位置时可用(如在地图中),但没有预定义的 info.plist 激活规则(如 NSExtensionActivationSupportsImageWithMaxCount 或 NSExtensionActivationSupportsMovieWithMaxCount)地点。

有没有办法为使用位置触发的操作扩展编写 NSExtensionActivationRule?

0 投票
0 回答
161 浏览

ios8 - 带有共享扩展和钥匙串的 iOS 上的 GPPSignIn 问题

我编写了一个使用 google plus 登录的 iOS 8 应用程序(在目标 C 中)。主应用程序及其共享扩展使用相同的钥匙串,因此使用 GPPSignInButton 从主应用程序登录为扩展提供了身份验证。问题是,如果两个目标以非常特定的顺序运行,我只能让它工作。

这不起作用:

  1. 打开主应用程序并登录(成功)
  2. 打开共享扩展并尝试“trySilentAuthentication” - 这会失败,因为对于共享扩展,钥匙串中没有身份验证。

但是 - 这确实有效:

  1. 首先打开共享扩展 - 正如预期的那样,钥匙串中没有身份验证
  2. 打开主应用程序并登录(成功)
  3. 重新打开共享扩展 - 这次钥匙串中有身份验证并且“trySilentAuthentication”成功。

因此,除非在主应用程序登录之前打开它,否则共享扩展似乎无法访问钥匙串中的身份验证。我认为这不是钥匙串的普遍问题,因为我能够分享其他应用程序和扩展程序之间的钥匙串中的对象类型,无论它们打开的顺序如何。

我已经使用两个单独的普通应用程序(没有扩展)做了一些实验,我发现同样的问题发生了 - 应用程序可以在钥匙串中共享 google plus auth,但前提是两个应用程序已经有机会访问 [GPPSignIn sharedInstance ] - 他们甚至不必对共享实例做任何事情,只需访问它。如果您先登录到一个应用程序,然后尝试使用现有的钥匙串加入,那么您将无法访问已经存在的身份验证。

有没有人遇到过这种类型的问题,或者知道如何调试身份验证过程以找出为什么订单如此重要?

0 投票
3 回答
9402 浏览

ios - iOS Widget后台更新

根据苹果关于widgetPerformUpdateWithCompletionHandler: 的说法,当widget 不可见时,iOs Widget 也可以更新他的内容。

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

如果我的 todayViewController 被释放,它如何响应 widgetPerfomrUpdateWithComplationHandler ?

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

iOs 小部件的生命周期如何?

请帮助我:)谢谢