I am working on push notification on iPad. My application is a universal application include iPhone and iPad. The iPhone push notification works well, the user receives push, the app name appears in the Setting -> Notifications
However, I have a small issue with the ipad version is that the app name does not appear in the list of Settings -> Notifications. I can still register for the device ID, the iPad does receive the push notification.
Does anyone know what can be a reason? I checked and be sure that both the registering code for both devices are exactly the same
Maybe this is obvious, but did you try to:
Restart the iPad?
Completely remove the App, create a clean build and run that build on the iPad?
Try to install on another iPad? Is the issue also present on the other iPad?
Reinstalling a clean build and restarting the device should do the trick with the majority of strange problems like this one. If this is not resolving your problem it's very important to test on another iPad or completely reset your iPad.
This way you can see if there is something wrong in the iOS install itself. It sounds like this is the case, because push is working and the iPhone version is working fine.
By testing on another iPad you could determine if the problem is in your code/App or in iOS.
Is your iPad updated to the latest version?
Follow the steps mentioned below.
http://ipad.about.com/od/iPad_Guide/ss/How-To-Turn-Off-Push-Notifications-On-The-Ipad.htm
Are you sure you are registering your app at launch time?
I had a similar issue where I removed - (void)registerForRemoteNotificationTypes by accident.
All the devices on which I had the application before removing that line still had the settings, but the new one didn't register to push hence not being registered in Settings.
Related
We have submitted an update version of our existing applications in the App Store recently. But we have received a issue from one of the users, saying that the app is not functioning properly after the update. So in order to replicate the same, what are the steps to reproduce, so that i can analyse the issue?
Any help will be appreciated.
To simulate this before pushing yoru updated version to the AppStore you can:
Download the old version of your app from the appstore
Run the updated version of your app from XCode on the same device.
What will happen behind the scenes is that your app will be updated in a way similar to the Appstore. Your app will be partially updated while your doucments folder will stay the same. (what usually causes problems)
This solution is better because it lets you check for problems before and update was pushed to the Appstore.
Yeah, I get this a lot. The solution is a bit annoying, but you need to keep a history of IPAs you've submitted so you can put the on your phone through iTunes (so not the simulator) and then, run your code on your device putting a breakpoint on your applicationDidFinishLaunching handler in your app delegate, and start tracing from there. You should be able to find the old app store version in your organiser from the last time you submitted, or, go through your SVN/GIT history and checkout the version tagged to your release version.
Many times in the past that has happened to me where I test a new revision and everything looks fine but when I submit an update and is approved, users start complaining about a crash or lost data.
This is way I approach the problem.
(This is most important step) You need to either have your old code or old binary installed on your actual apple device. (Physical iPhone / iPad)
Now go to iTunes and install your new update.
Attach your physical iPhone / iPad to you computer, Launch Xcode and start debugging it.
NOTE: There have been many times when things work perfectly in the Simulator but break on the actual device. Its always important to test your code on the real thing as that is what the users are going to be on.
All that is required is to have the version of the app that is in the app store on your device, then install the updated version to your device. You can debug it using Xcode when you install the new version.
I am developing an app that uses push notifications, and testing on a device with iOS 5.1.1. I would like to test the scenario where the user is prompted about push notifications during the app's first run. The dialog appears the first time I call registerForRemoteNotificationTypes, but never appears again, even if the app is re-installed from scratch. How can I clear the setting so that the dialog will appear again?
The same question was posted before, but the answers do not work for iOS 5 or later, as noted in the comments there.
Apple's documentation says to uninstall the app and mess with the clock to make it look like the app was uninstalled for a day, but this does not work on iOS5.
Another answer suggested running General -> Reset -> Erase All Content And Settings - I tried this, but it froze my device and I ended up having to power-cycle it. In any case, this is a heavy-handed solution that is not practical for testing.
Another answer suggested removing your app's entry from /private/var/mobile/Library/RemoteNotification/Clients.plist, but this file does not exist on iOS5.
Is there a way to accomplish this on iOS5?
I found a solution that works if your device is jailbroken:
Use an app like iFile to open the file /var/mobile/Library/SpringBoard/applicationstate.plist with a property list viewer
Find your app's bundle identifier and delete the key SBRemoteNotificationClient
Restart SpringBoard - either reboot the device, SSH to the device and run killall SpringBoard, or use the Respring app.
Next time you run your app, it will show the notification permission dialog once again.
I've tested this on iOS 5.1.1.
Provided your code paths for iOS 5 and iOS 6 aren't too different, the easiest option is probably to just test that specific behaviour on iOS 6 — the callbacks you get on iOS 5 should be similar enough for it not to be an issue.
Alternatively, change the app's bundle ID. Slightly tedious (in the past I've needed to restart Xcode for it to notice that change in bundle ID), and you'll need a wildcard provisioning profile handy.
When a app has a push notification feature implemented at what point in time do we see the app name under Settings-->Notifications for enabling/disabling notifications?
Is it when you install the app and IOS will automatically come to know this or we need to run the app at-least once to see this option.
I am seeing two different cases: When I install the app on my iPod touch I immediately see the Push notification enabling switch in Settings but when I install it on my iPhone it do not show this option even after running the app. What could be the reason?
It shows when you register the app for push notifications in code. The reason it is showing up for you as soon as you install it on one of your devices is that you have already accepted it on a previous install of the same app, and uninstalling/reinstalling unfortunately does not cause iOS to forget this.
I have a strange problem with my iPhone app.
I use geolocation and push notification. Everything is ok, but I want to test from scratch on the iPhone (connected to xcode debugger)... and I can't re initialized the iPhone.
I explain: I remove the app from the iPhone, and after re-installing the app (with xcode or with iTunes), I launch the app, but iOS doesn't ask me to approve geolocation and push notification as it does the first time. In fact, it seems to 'remember' my choices.
As I need to debug this (Some users have problem on running app the first time), I'm blocked.
Thanks by advance for yours answers
There's a place in the Settings app to reset Location permissions.
I developed a application which uses push notification,it was working fine but when today i updated and when i run the application ,app is not able to get device token,both delegates methods are not called .but when i see the notification in settings of iphone ,i find my app as registered for notification ,how can i fix this problem any help?
Unlocked iPhones have many problems with Push Notifications. Check the web, there are some work arounds you can do to get it working. Strange that it worked before, but now it isn't.. The methods you spoke about are the correct methods and should be fired when launching the app...
You can try to kill the app from the multitasking. Maybe that's the case the methods aren't called...