- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在我的应用中构建了 Firebase 通知。它是成功的工作。但如果通知数据等于“第二”,我想打开,然后在我的应用程序中打开 SecondViewController。我能怎么做?我使用 userInfo 但我没有这样做。
Firebase Notification Special Data: { "view" : "Second" }
这是我完整的 appdelegate 代码。谢谢。我为我的英语感到抱歉。
import UIKit
import Firebase
import UserNotifications
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
static var shared: AppDelegate { return UIApplication.shared.delegate as! AppDelegate }
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
FirebaseApp.configure()
application.registerForRemoteNotifications()
requestNotificationAuthorization(application: application)
if let userInfo = launchOptions?[UIApplicationLaunchOptionsKey.remoteNotification] as? NSDictionary {
NSLog("[RemoteNotification] applicationState: \(applicationStateString) didFinishLaunchingWithOptions for iOS9: \(userInfo)")
//TODO: Handle background notification
}
return true
}
var applicationStateString: String {
if UIApplication.shared.applicationState == .active {
return "active"
} else if UIApplication.shared.applicationState == .background {
return "background"
}else {
return "inactive"
}
}
func requestNotificationAuthorization(application: UIApplication) {
if #available(iOS 10.0, *) {
UNUserNotificationCenter.current().delegate = self
let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
UNUserNotificationCenter.current().requestAuthorization(options: authOptions, completionHandler: {_, _ in })
} else {
let settings: UIUserNotificationSettings = UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
application.registerUserNotificationSettings(settings)
}
}
}
@available(iOS 10, *)
extension AppDelegate : UNUserNotificationCenterDelegate {
// iOS10+, called when presenting notification in foreground
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
let userInfo = notification.request.content.userInfo
NSLog("[UserNotificationCenter] applicationState: \(applicationStateString) willPresentNotification: \(userInfo)")
//TODO: Handle foreground notification
completionHandler([.alert])
}
// iOS10+, called when received response (default open, dismiss or custom action) for a notification
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
let userInfo = response.notification.request.content.userInfo
NSLog("[UserNotificationCenter] applicationState: \(applicationStateString) didReceiveResponse: \(userInfo)")
//TODO: Handle background notification
completionHandler()
}
}
extension AppDelegate : MessagingDelegate {
func messaging(_ messaging: Messaging, didRefreshRegistrationToken fcmToken: String) {
NSLog("[RemoteNotification] didRefreshRegistrationToken: \(fcmToken)")
}
// iOS9, called when presenting notification in foreground
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) {
NSLog("[RemoteNotification] applicationState: \(applicationStateString) didReceiveRemoteNotification for iOS9: \(userInfo)")
if UIApplication.shared.applicationState == .active {
//TODO: Handle foreground notification
} else {
//TODO: Handle background notification
}
}
}
最佳答案
来自用户信息的通知数据
在 userNotificationCenter 中添加此代码...
let str:String = (userInfo["gcm.notification.imType"] as? String)!
switch str {
case "FIRST":
let rootViewController = self.window!.rootViewController as! UINavigationController
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let firstViewController = storyboard.instantiateViewController(withIdentifier: "FIRSTID") as! MessagesTableViewController
rootViewController.pushViewController(firstViewController, animated: true)
case "SECOND":
let rootViewController = self.window!.rootViewController as! UINavigationController
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let secondViewController = storyboard.instantiateViewController(withIdentifier: "SECONDID") as! SecondViewController
rootViewController.pushViewController(secondViewController, animated: true)
default:
print("Type is something else")
}
关于ios - Firebase 通知 Swift 3 SecondViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46179960/
我正在尝试创建出现在最顶部 View Controller 上的通用警报,而底部 View Controller 仍然可以点击。此警报只是一个 20 点高的状态行,用于通知用户网络可达性。如何使 UI
我在按钮方法中有这段代码。 @IBAction func sendMsg(_ sender: UIButton) { DataforChat.arr2.append(enterMsg.text
正如标题所述,我无法将按钮拖动到我创建的 SecondViewController 中。 以下是我采取的所有步骤: 1) 进入编辑器 -> 嵌入 -> 导航 Controller 来创建一个新的导航
在评论我的项目之前,我是 Swift 的新手,正在努力学习。 在我的项目中,我有两个 View Controller ,将命名为 FirstViewController 和 SecondViewCon
我正在使用 Xcode 提供的模板制作 TabBarController 应用程序,每次单击它时我都需要重新加载第二个 View Controller 。我该怎么做? 谢谢 最佳答案 每当标签栏切换v
我目前正在开发一个应用程序,但遇到以下问题:我有我的主 VC (ReceiveInputVC),在我输入一个输入后,它会转到第二个 VC (TimeLeftVC ) 并使用从 mainVC 接收到的输
我第一次尝试构建一个分组的而不是简单的 tableView,但在点击单元格时显示的信息不正确时遇到了问题。 首先,我创建了一个数组,该数组用于为我的组提供标题。接下来我有一个数组,其中包含另外 4 个
如何在 viewDidLoad() 方法中与 ViewController 同时加载 SecondViewController ? Segue 的类型是 Sheet。 import Cocoa cla
prepareForSegue() 方法定义了 SecondViewController 的对象类型。然后,它访问 SecondViewController 类的数据成员并将“New View Con
我正在做一个练习,在 ViewController 中呈现一个 SecondViewController。 这就是我调用 View Controller 的方式。 - (void)viewDidApp
我有一个名为“Capital”的子类,它声明了变量,我想通过子类将这些变量通过 segue 推送到新的 SecondViewController 除了子类“Capital”,我还有 (2) 个 Vie
我正在尝试通过按下主视图 Controller 中的按钮将 JSON 值传输到另一个 View Controller 中的标签。我的第一个 View Controller 称为“ViewControl
经过多次尝试,我没有成功理解错误以及为什么图像没有出现...这是我的代码。 我的协议(protocol).h #import @protocol myProtocol -(UIImage *)tr
我在我的应用中构建了 Firebase 通知。它是成功的工作。但如果通知数据等于“第二”,我想打开,然后在我的应用程序中打开 SecondViewController。我能怎么做?我使用 userIn
我有两个 ViewController。我的第一个 View 有两个按钮(按钮 1 和按钮 2,每个按钮都使用 UIImageView 连接到第二个 View 。 我想要发生的是,当我按下按钮 1 时
我正在使用以下 Pod:https://github.com/xxxAIRINxxx/MusicPlayerTransition 。当我进行音乐播放器转换并关闭它时, Collection View
我正在我的 iOS 应用中实现 Admob 插页式 Admob 广告。我需要在从第二个 View Controller 到(主) View Controller 的转换之间显示广告。我将第二个 Vie
我有 TreeView Controller 。当 secondViewController 出现时,我尝试在这个时候呈现 thirdViewController 我想关闭 secondViewCon
这是我的代码,我正在尝试使用“prepareForSegue”函数将图像从 tableViewController (firstViewController) 发送到我的 detailedViewCo
FirstViewController 中的函数调用是 - @IBAction func redViewAct(sender :UIButton) { let nextview = s
我是一名优秀的程序员,十分优秀!