【发布时间】:2016-02-15 20:15:28
【问题描述】:
我的应用允许向用户远程推送通知。当用户点击推送通知时,如何在特定的视图控制器中打开它?我希望应用根据收到的推送通知打开并导航到特定的视图控制器。
【问题讨论】:
标签: ios iphone swift push-notification
我的应用允许向用户远程推送通知。当用户点击推送通知时,如何在特定的视图控制器中打开它?我希望应用根据收到的推送通知打开并导航到特定的视图控制器。
【问题讨论】:
标签: ios iphone swift push-notification
在 AppDelegate 中,您将获得委托回调“didFinishLoading”或“didReceivePushNotification”方法(基于您的应用在后台或前台)。在该方法中获取最顶层视图控制器的实例,然后创建您要显示的特定视图控制器并从最顶层视图控制器呈现/推送。
【讨论】:
为此,您需要为可以打开您的应用程序的每个ViewController 设置一个identifier,然后在AppDelegate 中的application:didFinishLaunchingWithOptions: 的launchOptions 参数中检查payload执行此操作的步骤是:
在您的PFPush 中,使用setData 将密钥添加到您的有效负载中,其标识符为:notification.setData(["alert":"your notification string", "identifier":"firstController"])
通过选择每个ViewController 并更改以下值来设置identifier
payload 中发送情节提要ID,并使用密钥identifier
if let payload = launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey] as? NSDictionary, identifier = payload["identifier"] as? String {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier(identifier)
window?.rootViewController = vc
}
【讨论】:
setData 在您的推送通知中使用字典 ["identifier":"firstController"] 或您的标识符应该是什么来发送数据和推送
ViewController 打开?
alert 的键并将其值设置为您要发送的警报,如下所示:["alert":"your notification string", "identifier":"firstController"]
UILocalNotification *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (notification)
{
[self application:application didReceiveRemoteNotification:(NSDictionary*)notification];
}
【讨论】: