gpt4 book ai didi

ios - 处理应用程序未运行时将显示的推送通知

转载 作者:搜寻专家 更新时间:2023-10-31 22:58:34 27 4
gpt4 key购买 nike

简介

我对 fcm/gcm 的工作原理以及 swift 应用程序 如何处理接收和发送这些推送通知 有基本的了解

问题

当应用程序处于前台时,我编写了一个代码,我可以在其中选择将哪个通知显示为横幅。

我将该代码放在 AppDelegate 中的这个函数中

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void)

然后我将按系统默认值过滤推送通知,我将其放入 NSUserDefaults swift 2.3UserDefaults for swift 3

我有一个易于获取和设置的类,看起来像这样

class Persistence {
static let defaults = NSUserDefaults . ....
static var doShowMessageNotification:Bool {
get {
return defaults.get ...
}
set(value) {
defaults.set ...
}
}
}

// you get the idea

然后再次在 didRecieveRemoteNotification

switch Persistence.doShowMessageNotification {
case true:
doThis()
case false:
break //do nothing in short
}

然后我将检查应用程序状态是否为

func doThis() {
switch UIApplication.sharedApplication().applicationState {
case .Active:
// do some stuff here
case .Inactive, .Background:
// do some stuff here
}
}

这在应用程序运行或待机时完美运行,但在应用程序终止/关闭时无法运行。

是否可以在不更改 API/服务器代码的情况下实现此功能?

最佳答案

技术上不可能。您的应用程序在未运行时无法执行此代码。当您的应用未处于事件状态时,您无法隐藏通知。唯一可用的方法是从服务器代码处理此问题。

如果您真的不能从服务器代码执行此操作,解决方法是使用 Notification content Extension。 来自 Notification content extension ,您可以处理要在通知中显示的内容。如果您不想从这里显示特定的通知,您可以将内容更改为一些默认消息。
在扩展程序的 plist 中,将 UNNotificationExtensionDefaultContentHidden 设置为 false。这将隐藏从服务器收到的默认通知文本并显示您的 View ,您可以在其中显示您想要的任何内容。

您可以在 NotificationViewController.swift 文件的 didReceive 方法中获取通知详细信息。

@IBOutlet var titleLabel: UILabel?
@IBOutlet var subtitleLabel: UILabel?

override func viewDidLoad() {
super.viewDidLoad()
// Do any required interface initialization here.
}

func didReceive(_ notification: UNNotification) {
if(requiredtoDisplay)
{
titleLabel?.text = notification.request.content.title
subtitleLabel?.text = notification.request.content.subtitle
}
else
{
titleLabel?.text = "default text"
subtitleLabel?.text = "default tex" //or call api to update device token with "" , if you don't want to receive further notification after this
}
}

关于ios - 处理应用程序未运行时将显示的推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40779078/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com