iOS App启动时候
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
//对应的对象为启动URL(NSURL)
NSURL *url = [launchOptions objectForKey:UIApplicationLaunchOptionsURLKey];
//对应启动的源应用程序的bundle ID (NSString)
NSString *bundleId = [launchOptions objectForKey:UIApplicationLaunchOptionsSourceApplicationKey];
//由本地通知启动
UILocalNotification * localNotify = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
//由远程通知启动
NSDictionary * userInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
App远程推送
扩展UIApplication+Addition.h
//是否注册
+ (BOOL)isPushRegistered
{
UIApplication *application = [UIApplication sharedApplication];
if ([application respondsToSelector:@selector(isRegisteredForRemoteNotifications)])
{
return [application isRegisteredForRemoteNotifications];
}
else
{
return application.enabledRemoteNotificationTypes != UIRemoteNotificationTypeNone;
}
}
//注册push
+ (void)registerPush
{
UIApplication *application = [UIApplication sharedApplication];
//-- Set Notification
if ([application respondsToSelector:@selector(isRegisteredForRemoteNotifications)])
{
// iOS 8 Notifications
[application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];
[application registerForRemoteNotifications];
}
else
{
// iOS < 8 Notifications
[application registerForRemoteNotificationTypes:
(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge |
UIRemoteNotificationTypeSound)];
}
}
-> 苹果远程服务器
在AppDelegate
->注册成功
- (void)application:(UIApplication *)applicationdidRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
返回一个deviceToken,
将token返回给自己服务器或第三方服务器,提交PUSH证书和密码
自己服务器或第三方服务器将要推送的内容传给苹果服务器,苹果服务器推送到手机App上。
->接受到远程推送来的消息
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary*)userInfo
->注册失败
-(void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error