【问题标题】:Adding text field in Remote Notification, iOS 8在远程通知中添加文本字段,iOS 8
【发布时间】:2014-11-08 13:51:06
【问题描述】:

我想在我的 iOS 应用程序中添加功能,用户可以直接从推送通知回复我的消息。就像 iMessage 应用程序在 iOS 8 中一样。我可以添加按钮来推送通知,但没有找到任何关于如何添加文本字段的指南。 请提供任何帮助。提前致谢。

------------------------------------------ ----------------------------------------------

我知道如何添加操作(按钮),但如何添加文本字段或文本视图以供输入

【问题讨论】:

    标签: objective-c iphone cocoa-touch push-notification ios8


    【解决方案1】:

    在询问时,使用提供的 API 是不可能的。 UIUserNotificationAction 对象仅代表您可以添加的其他按钮,但您不能直接输入文本。现在,您应该添加一个“回复”按钮,然后点击打开应用程序并显示键盘,以便用户回复。

    使用 iOS 9 SDK,这可以通过将 UIUserNotificationActionBehaviorTextInput 设置为通知操作的 behavior 来实现。 请务必阅读文档以获取更多信息。

    请参阅this 答案,了解如何在 Swift 中实现此目的的示例。

    【讨论】:

    【解决方案2】:

    您不能在 iOS 8 或更低版本中执行此操作,但在 iOS 9 中也可以这样做,我已经写了一个 blog post 关于相同的内容。很简单,

     //creating the inline reply notification action
       let replyAction = UIMutableUserNotificationAction()
       replyAction.title = "Say Something"
       replyAction.identifier = "inline-reply"
       replyAction.activationMode = .Background
       replyAction.authenticationRequired = false
       replyAction.behavior = .TextInput
    
     //creating a category
       let notificationCategory:UIMutableUserNotificationCategory = UIMutableUserNotificationCategory()
       notificationCategory.identifier = "INVITE_CATEGORY"
       notificationCategory .setActions([replyAction], forContext: UIUserNotificationActionContext.Default)
    
     //registerting for the notification.
          application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes:[ UIUserNotificationType.Sound, UIUserNotificationType.Alert,
                UIUserNotificationType.Badge], categories: NSSet(array:[notificationCategory]) as? Set<UIUserNotificationCategory>))
    

    我可以像下面这样得到它,

    【讨论】:

    • 任何想法,按下推时如何传输用户输入?就像在 iMessage 应用程序中一样。当iPhone被密码锁定时,您是否有黑色永久键盘的错误,并且您尝试在锁定屏幕上回答push并按下它?
    • @RomanTruba 我没有正确回答您的问题,请您说的更清楚些。您想将用户输入转移到何时何地?
    • 查看 iMessage 应用程序的示例:当您看到带有消息的横幅时,拉动它进行回复,然后输入一些文本,然后按横幅,而不是“发送”按钮。您将看到您在输入字段中输入的文本。
    • 我只能在应用程序处于后台时才能实现这一点,当应用程序不在内存中时如何执行此发送消息。我正在尝试向发送 PN 的发件人发送 XMPP 消息。
    • @VickyDhas 您应该在推送负载中添加类别键。在我的示例中,它应该在 json 中作为“INVITE_CATEGORY”发送,例如 {"category":"INVITE_CATEGORY","message":"","alert":"",,........}
    【解决方案3】:

    Swift 4.2, 4.0+ of satheeshwaran 答案。

    //creating the inline reply notification action
    let replyAction = UIMutableUserNotificationAction()
    replyAction.title = "Say Something"
    replyAction.identifier = "inline-reply"
    replyAction.activationMode = .background
    replyAction.isAuthenticationRequired = false
    replyAction.behavior = .textInput
    
    //creating a category
    let notificationCategory = UIMutableUserNotificationCategory()
    notificationCategory.identifier = "INVITE_CATEGORY"
    notificationCategory.setActions([replyAction], for: .default)
    
    //registerting for the notification.
    let categories = NSSet(array: [notificationCategory]) as? Set<UIUserNotificationCategory>
    let settings = UIUserNotificationSettings(types: [ .sound, .alert,.badge], categories: categories)
    application.registerUserNotificationSettings(settings)
    

    【讨论】:

    • 'UIMutableUserNotificationAction' 在 iOS 10.0 中已弃用:使用 UserNotifications Framework 的 UNNotificationAction
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-21
    相关资源
    最近更新 更多