ios - 如果通过触摸推送启动应用程序,有没有办法在等待应用程序的主页面加载完成后运行代码?
问题描述
在我的应用程序上轻触推送以移动屏幕。如果应用程序已经在运行,它运行良好。如果应用程序关闭并且您触摸该应用程序,您将无法接收信息。如果应用程序是通过触摸推送启动的,有没有办法在等待我的应用程序主页完成加载后运行代码?
Appdelegate.swift
func userNotificationCenter(_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void) {
let userInfo = response.notification.request.content.userInfo
Messaging.messaging().appDidReceiveMessage(userInfo)
// Print message ID.
if let messageID = userInfo[gcmMessageIDKey] {
}
let storyboard = UIStoryboard(name: "Main", bundle: nil)
Execution code when touching push
}
Execution code when touching push
在加载主页之前执行,并且应用程序终止。执行代码什么时候有办法等待触摸推送?
解决方案
如果应用程序是通过触摸推送启动的,有没有办法在等待我的应用程序主页完成加载后运行代码?
自己调用和触发这样didReceive
的委托方法是不可能的,或者说不理想。
你可以做的是保存数据messageID
,或者更好地保存userInfo
到你的本地,比如UserDefaults
. 然后在加载主屏幕或主屏幕或根屏幕时自行检查。如果UserDefaults
包含推送数据,则从那里自行处理。否则,做正常的事情。
推荐阅读
- sql - 如何截断sybase数据库中的实数、金钱或十进制值
- json - 如何从json数组中获取字符串(处理)
- reactjs - 如果项目在本机反应中为零,如何检查平面列表
- android - 在警报对话框中显示 tablayout
- node.js - 按 DESC 性能排序的 Sqlite
- javascript - 使用生成的 ID 删除 Json 数据
- excel - OpenXML - 继续写入下一个工作表(百万行命中)
- laravel - SPA 使用 Laravel 5.8 / Vue - auth() 返回令牌 true 而不是令牌值
- java - 无法创建 Java 虚拟机 javaw.exe。我的世界
- java - 使用 JNI 从 Android 应用程序向 C++ 发送字符串