iOS AppDelegate 代理详解(启动,打开App,推送,通知)
来源:互联网 发布:java的finalize 编辑:程序博客网 时间:2024/05/17 06:31
//App将要启动- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(nullable NSDictionary *)launchOptions{ return YES;}//App已经启动- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //若由其他应用程序通过openURL:启动 NSURL *url = [launchOptions objectForKey:UIApplicationLaunchOptionsURLKey]; if(url){ } //启动的源应用程序的 bundle ID NSString *bundleId = [launchOptions objectForKey:UIApplicationLaunchOptionsSourceApplicationKey]; if(bundleId){ } //若由本地通知启动 UILocalNotification * localNotification = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey]; if(localNotification){ } //若由远程通知启动 NSDictionary * remoteNotification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]; if(remoteNotification){ } return YES;}//App将要进入前台- (void)applicationWillResignActive:(UIApplication *)application {}//App已经进入前台- (void)applicationDidBecomeActive:(UIApplication *)application {}//App将要进入后台- (void)applicationWillEnterForeground:(UIApplication *)application {}//App已经进入后台- (void)applicationDidEnterBackground:(UIApplication *)application {}//App将要退出- (void)applicationWillTerminate:(UIApplication *)application {}//App内存警告- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application{ NSLog(@"系统内存不足");}/*这个方法是其它应用通过url唤醒你的应用时调用的另外,需要在plist中添加自己的url协议 第一步:找到Info中的 “URL types” 第二步:增加一个URL identifier,建议用反域名(com.jingjin.myApp),URL Schemes(myApp),URL Schemes就是唤醒自己应用的URL的开头。 */- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{ if (!url) {//如果时没有链接 return NO; } NSLog(@"handleOpenURL: %@", [url absoluteString]); //判断能否打开你的应用 if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"myapp://"]]) { //做处理 return YES; } else { return NO; } return YES;}//StatusBar框方向将要变化- (void)application:(UIApplication*)application willChangeStatusBarOrientation:(UIInterfaceOrientation)newStatusBarOrientation duration:(NSTimeInterval)duration{}//StatusBar框方向已经变化- (void)application:(UIApplication*)application didChangeStatusBarOrientation:(UIInterfaceOrientation)oldStatusBarOrientation{}//StatusBar框坐标将要变化- (void)application:(UIApplication*)application willChangeStatusBarFrame:(CGRect)newStatusBarFrame{}//StatusBar框坐标已经变化- (void)application:(UIApplication*)application didChangeSetStatusBarFrame:(CGRect)oldStatusBarFrame{}//当系统时间发生改变时执行- (void)applicationSignificantTimeChange:(UIApplication *)application{}//已经注册远远程通知- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings{}//当应用程序成功的注册一个推送服务-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *) deviceToken{ NSString *tokenStr = [NSString stringWithFormat:@"%@",deviceToken]; //将其中的<>去掉 tokenStr = [tokenStr stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]]; //将其中的空格去掉 tokenStr = [tokenStr stringByReplacingOccurrencesOfString:@" " withString:@""];}//当 APS无法成功的完成向 程序进程推送时-(void) application:(UIApplication *) application didFailToRegisterForRemoteNotificationsWithError:(NSError *) error{}//当一个运行着的应用程序收到一个本地的通知- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{}//程序运收远程通知- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler{ if (application.applicationState == UIApplicationStateActive) {//程序当前正处于前台 }else if(application.applicationState == UIApplicationStateInactive){//程序处于后台 } AudioServicesPlaySystemSound(1007);//系统的通知声音 AudioServicesPlayAlertSound(kSystemSoundID_Vibrate);//震动 //自定义声音 NSString *path = [[NSBundle mainBundle] pathForResource:@"message" ofType:@"wav"]; //组装并播放音效 SystemSoundID soundID; NSURL *filePath = [NSURL fileURLWithPath:path isDirectory:NO]; AudioServicesCreateSystemSoundID((__bridge CFURLRef)filePath, &soundID); AudioServicesPlaySystemSound(soundID); //声音停止 AudioServicesDisposeSystemSoundID(soundID); /* 关于userInfo的结构,参照苹果的官方结构: { "aps" : { "alert" : "", "badge" : 10,//推送信息 "sound" : ""//app的icon右上角的数字 }, "acme1" : "bar", "acme2" : 42//两个参数 } */}//- (void)application:(UIApplication *)application handleActionWithIdentifier:(nullable NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo withResponseInfo:(NSDictionary *)responseInfo completionHandler:(void(^)())completionHandler{}- (void)application:(UIApplication *)application handleActionWithIdentifier:(nullable NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo completionHandler:(void(^)())completionHandler{}//处理本地通知- (void)application:(UIApplication *)application handleActionWithIdentifier:(nullable NSString *)identifier forLocalNotification:(UILocalNotification *)notification withResponseInfo:(NSDictionary *)responseInfo completionHandler:(void(^)())completionHandler{}
0 0
- iOS AppDelegate 代理详解(启动,打开App,推送,通知)
- Objective-C-iOS AppDelegate代理详解(启动,打开App,推送,通知)
- iOS 推送通知详解
- iOS 推送通知详解
- iOS 推送通知详解
- iOS 推送通知详解
- iOS 推送通知详解
- iOS 推送通知详解
- IOS 推送通知详解
- iOS 推送通知详解
- iOS 推送通知详解
- IOS代理、通知详解
- ios app推送通知详细教程一
- ios app推送通知详细教程二
- ios app推送通知详细教程二
- IOS Project AppDelegate 代理
- ios uiapplication 代理appdelegate
- 【Android】信鸽推送通知栏点击之重复打开APP&重复从Laucher主入口启动问题
- L2-007. 家庭房产(并查集+结构体记录)
- 第七、Java的函数与函数重载
- Python普通方法、静态方法、类方法
- 最大子串和的问题,java实现
- phonegap(Cordova) 入门教程
- iOS AppDelegate 代理详解(启动,打开App,推送,通知)
- SortStep 排序
- 不平衡数据下的机器学习方法简介
- 2017湖南多校第二场-20170312
- centos下安装openmeetings
- 已知前序遍历和中序遍历重建二叉树
- Android GridView实现动画效果
- 通话记录
- MySQL数据结构分析—IO_CACHE