Apple has changed the way notifications are handled in iOS 8 from that in iOS 7.  Now an app can receive silent remote notifications without event asking for permission from user.

In iOS 7, we were using the method:
- (void)registerForRemoteNotificationsTypes:

But this method has now been deprecated and new method has been introduced in iOS 8.

From Apple's WWDC video:




In iOS 8, you can receive remote notifications by using following method on  UIApplication .
- (void)registerForRemoteNotifications

Example call for this method would be:
[[UIApplication sharedApplication] registerForRemoteNotifications]

After this application:didRegisterForRemoteNotificationsWithDeviceToken: will be called
Note: the callback with token is only called if the application has successfully registered for user notifications using the function above or if Background App Refresh is enabled.
You are now able to obtain silent notifications with by sending following payload.
{  "aps" {    "content-available": 1  }}

When iOS receives such a notification, then it wakes up your app for seconds to fetch the new content. If you only want to send silent notifications, then no permissions will be asked from the user. But they can disable them by going to settings. 
But notifications that appear still needs permission. If the payload sent is of type:
{  "aps" {    "alert": "..."  }}



To present such type of notification you will have to register for user type notifications by calling registerForUserNotificationSettings:notificationSettings: method:
UIUserNotificationTypes types = UIUserNotificationTypeSound |                                 UIUserNotificationTypeBadge |                                UIUserNotificationTypeAlert;UIUserNotificationSettings *types = [UIUserNotificationSettings settingsForTypes:types categories:nil];[[UIApplication sharedApplication] registerForUserNotificationSettings:notificationSettings];

Part of the docs says, "If your app displays alerts, play sounds, or badges its icon while in the background, you must call this method during your launch cycle to request permission to alert the user in those ways."
Note: Presenting User type notifications asks for user's permission.
Summary:
If you only want to show local user notifications, then you will have to call registerForUserNotificationSettings:notificationSettings: then which will also ask for user's permission.

But you can still receive remote notifications without asking user's permission.

But remote notifications with alerts will be shown to user only if the app has registered for user type notifications.