i want to handle the notification, in my app i have 2 tabs(friends,jobs) with navigation controller,and a barbutton on each navigation controller named 'notification'(on click it displays tableview).
On notification, if its job related it shud open the page linked to barbutton on jobs tab and if it is friends related it shud open the page linked to barbutton on friends tab.
The notification contains a userInfo dictionary. The contents of this is set by the push provider. So assuming that you're also the provider of pushes to your app, you can just add a key to the userInfo dictionary that your app will read when the push arrives.
Related
Is there a way to set up how users see the push notifications alert box? My notifications are appearing without the view / cancel buttons, but i'm receiving others from different apps with those buttons. Is that a setting i should set before sending the push notification?
Thanks!
There are two things going on in your question.
First, you will see no buttons at all when you receive Apple Push Notification alerts and your screen is locked. All Apps will have just the Title and the Message of the Alert, without the buttons. If your phone is unlocked, you will see the buttons.
Second, altering the Payload, you can customize the "View" button text (or remove it) Apple Push Documentation with the "action-loc-key" key. If you set it to null, only "OK" will be presented. If you specify a value, it must be a localized string in your Application and the "View" will be replaced with that value.
Check out the docs -- as you can send the name of the "open app" button in the push notification payload. Here's apples take on it
My application has tab bar with one of the tabs having a segmented control on navigation bar.
Based on segment clicked different view is displayed using a url.
I am calling the url in viewdidload method.I do not want to use viewwillAppear to call the url as it will be called each time the view is displayed.
I only want to call the url again whenever user closes the application and comes back.
Whats the best way to do this.Should I remove the view controller from and reload it again once the application is opened.
Please use a more descriptive title for your question next time!
There are notifications for this that you can observe in your application:
UIApplicationDidBecomeActiveNotification and UIApplicationWillEnterForegroundNotification come to mind.
I have a query regarding push notification.
Whenever a push comes and user is working on some XYZ controller and push requires another controller to be initialized and shown. Now should I show the push controller on top of the current active controller and take the user back to the currently working controller, once done?
What if the push controller has some actions involved and is a complete set of functionality associated with it. Should we restrict actions when a push comes.
What is the best deal?
It depends heavily on the flow and organization of your application. In a tab bar based application, you should have a tab for handling the notification activity, and place a badgeValue for the corresponding UITabBarItem. You could also show an alert offering the possibility of switching to the "handle notification" area on the other tab. Tab Bars are a good way of having "simultaneous" access to differing flows and switching back and forth between them without having to manage saving and restoring the VC flow yourself.
I have a doubt. I am building an application wherein if there is a new request is submitted I am getting a push notification in my application and on tap of "View" button in the push notification alert I need to show the request detail page. Now, normally this request detail page is 5th view in the stack. How should I handle this? Should I initialize first 4 views and put them on the stack before going to the detail page?
Also, there is a scenario where if someone is working on some part of the app and notification comes up. In that should I loose the changes on the currently opened page and show the request details if "View" was tapped on?
How should I handle this?
You can just push that view (the usual 5th view). The only thing is that when you pop that view, it will now act as the 2nd view, so theres no need to go through 4 additional views.
You can initialize and push the 5 views to your navigation controller (with animate:NO) to start the app up in the right place.
As for if you get a notification while running, that's really up to you and what is best for the app. You can always prompt the user before deleting any data. Note that if you get a push notification, your application:didReceiveRemoteNotification: instead of the alert showing.
This is commonly achieved by displaying the controller modally.
This way you don't have to recreate your view-controllers hierarchy and you don't lose the current context of your app if it was running. The user taps some "OK" button and returns to the previous screen.
For the first part of your question: if you have created your view in a decoupled way, that is, if it is not dependent on the 4 other views - i suppose then you can show this view without problems. Obviously the answer really depends whether your business rules allow this.
As for the second part of your question: you always can show an UIAlertView to your users asking whether they want to take action on the received push notification.
However - i think these problems really do not have anything to do with the nature of the push notifications, and you really should loose the "I have a doubt on push notification" part of your question :) ....
Hope this helps :)
When my app receives a Push Notification, application:didReceiveRemoteNotification: receives the data. When the user open the app from a notification, I want to jump to the last UITableView in the stack, to display the 'details' related to the Push Notification.
I am able to jump to the correct tab in the UITabBar.
Is there a way to Push views in that Tab from the App Delegate, or am I going about this the wrong way?
If you're already able to jump to the correct tab, you're almost there.
One way to do it would be to save off the push alert information into nsuserdefault... maybe in a form of a dictionary object in the "didReceiveRemoteNotification". It's like of like save off a cookie web development for later use.
Then for the viewcontroller you're displaying in the tab that you jump to, you could do a check in viewWillAppear and see if you have anything stored in your nsuserdefault and grab the saved off notification data there and you can look up the corresponding data in your UITableViewDataSource.
Once you have that, you can call or do what ever you'd normally do had you selected the same data/object represented by a table cell and push the desired view (controller) into view.
Make sure to remove the object saved in NSUserDefault once you're attempted to push the view.