【问题标题】:In custom iOS keyboard detect the app在自定义 iOS 键盘中检测应用程序
【发布时间】:2015-08-05 03:20:05
【问题描述】:

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

的字符串中

【问题讨论】:

  • 就像 Schemetrical 所说,您无法确定您所在的应用程序(至少,您不是 supposed 能够,并且可能发布了任何答案这将被视为漏洞并由 Apple 修复),但您可以知道您在 Twitter 样式的文本字段中,并做出适当的回应,这可能比了解应用程序更好,因为那里内置 API,可发布到 Twitter,可从任何应用程序使用。
  • @BenPious 感谢您的启发!我感谢有关“Twitter 样式文本字段”的任何线索
  • 您可以在 API 中访问实现此协议的对象(我忘了是哪个):developer.apple.com/library/ios/documentation/UIKit/Reference/…
  • UIKeyboardTypeDefault, UIKeyboardTypeASCIICapable, UIKeyboardTypeNumbersAndPunctuation, UIKeyboardTypeURL, UIKeyboardTypeNumberPad, UIKeyboardTypePhonePad, UIKeyboardTypeNamePhonePad, UIKeyboardTypeEmailAddress, UIKeyboardTypeDecimalPad, UIKeyboardTypeTwitter, UIKeyboardTypeWebSearch, UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable
  • @BenPious 你怎么看这违反了开发者指南?

标签: ios objective-c cocoa-touch keyboard ios-extensions


【解决方案1】:

可以通过以下代码实现。因为您将获得使用自定义键盘的应用程序的捆绑标识符。

斯威夫特

    let hostBundleID = self.parentViewController!.valueForKey("_hostBundleID")
    let currentHostBundleID = String(hostBundleID)
    print(currentHostBundleID);

从包标识符中您可以轻松找到应用名称。

【讨论】:

  • 苹果是否允许这样做?...因为这会导致应用扩展被拒绝吗?
  • @WillVonUllrich 我的一个应用程序已获得 Apple 批准,具有相同的实现。所以希望它也适用于你的情况。
  • 是否有任何 API 可以从 bundle id 获取应用详细信息?
【解决方案2】:

这是不可能的。 扩展以沙盒方式运行,仅从 API 获取信息,无法访问其他任何内容。键盘只能接收文本上下文更改和激活/停用呼叫。能够检测到应用程序位于扩展沙箱之外,因此是不可能的。

【讨论】:

    猜你喜欢
    • 2014-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    • 2015-11-18
    • 2015-07-19
    • 2014-10-29
    • 2014-12-15
    相关资源
    最近更新 更多