首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使通知点击苹果设备重定向到链接?

如何使通知点击苹果设备重定向到链接?
EN

Stack Overflow用户
提问于 2019-09-02 20:34:07
回答 2查看 1.5K关注 0票数 7

我能够成功地将APN发送到苹果设备上。我已经将我的应用程序编写成了react本地语言。当有人点击通知时,我想将他们重定向到我配置好的应用程序识别的深链接-- ne://page/id通过深度链接,我不需要帮助。如何将通知重定向到链接?

从我的终点开始,我已经尝试了一切。我看了这里的正式文档-它没有说明任何关于urls和重定向- 通知

此外,我还使用apn节点库通过我的服务器发送通知。他们的通知文档没有url选项,只有一个叫做urlArgs的东西。

EN

回答 2

Stack Overflow用户

发布于 2019-09-11 07:24:01

对于进一步的参考,在我的答复之后,您可以参考https://medium.com/@stasost/ios-how-to-open-deep-links-notifications-and-shortcuts-253fb38e1696

当应用程序关闭或更多地在后台运行时,点击通知横幅将触发didReceiveRemoteNotification appDelegate方法:

代码语言:javascript
复制
    func application(_ application: UIApplication, 
didReceiveRemoteNotification userInfo: [AnyHashable : Any], 
fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {

    }

当应用程序在前台模式运行时收到推送通知时,也会触发此方法。因为我们只考虑当您想在特定页面上打开应用程序时的场景,所以我们将不包括在前台模式下处理通知。

为了处理通知,我们将创建一个NotificationParser:

代码语言:javascript
复制
class NotificationParser {
   static let shared = NotificationParser()
   private init() { }
   func handleNotification(_ userInfo: [AnyHashable : Any]) -> DeeplinkType? {
      return nil
   }
}

现在,我们可以将此方法连接到Deeplink Manager:

代码语言:javascript
复制
func handleRemoteNotification(_ notification: [AnyHashable: Any]) {
   deeplinkType =                       NotificationParser.shared.handleNotification(notification)
}

并完成appDelegate didReceiveRemoteNotification方法:

代码语言:javascript
复制
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
   Deeplinker.handleRemoteNotification(userInfo)
}

最后一步是完成NotificationParser中的解析方法。这将取决于您的通知结构,但是基本的解析技术将类似于:

代码语言:javascript
复制
func handleNotification(_ userInfo: [AnyHashable : Any]) -> DeeplinkType? {
   if let data = userInfo["data"] as? [String: Any] {
      if let messageId = data["messageId"] as? String {
         return DeeplinkType.messages(.details(id: messageId))
      }
   }
   return nil
}

如果您将应用程序配置为支持推送通知并希望对其进行测试,下面是我用来传递消息的通知:

代码语言:javascript
复制
apns: {
    aps: {
        alert: {
            title: "New Message!",
            subtitle: "",
            body: "Hello!"
        },
        "mutable-content": 0,
        category: "pusher"
    },
    data: {
        "messageId": "1"
    }
}
票数 1
EN

Stack Overflow用户

发布于 2019-09-11 22:59:13

  • 节点-apn的有效负载对象中设置URL,如下所示:
代码语言:javascript
复制
notification.payload = {
  url: "https://www.google.com"
}
  • userInfo对象的didReceiveRemoteNotification委托方法中解析AppDelegate的URL
  • 在App中打开WebView或Safari中的URL
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57762443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档