zoukankan      html  css  js  c++  java
  • iOS远程消息推送自我整理版

    @interface AppDelegate () <UIApplicationDelegate>

     

    @end

     

    @implementation AppDelegate

     

     

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

        

        /************ 检测通知 **************/

        

        if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {

            UIUserNotificationType types = UIUserNotificationTypeSound | UIUserNotificationTypeBadge | UIUserNotificationTypeAlert;

            UIUserNotificationSettings *notificationSettings = [UIUserNotificationSettings settingsForTypes:types categories:nil];

            [[UIApplication sharedApplication] registerUserNotificationSettings:notificationSettings];

        } else {

            [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];

        }

        

        

        return YES;

    }

     

    #pragma mark 消息推送模块

    - (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken

    {

        // re-post ( broadcast )

        NSString *token = [[[[deviceToken description]

                             stringByReplacingOccurrencesOfString:@"<" withString:@""]

                            stringByReplacingOccurrencesOfString:@">" withString:@""]

                           stringByReplacingOccurrencesOfString:@" " withString:@""];

        

        NSString *oldToken=[[NSUserDefaults standardUserDefaults]objectForKey:@"Token"];

        if (![token isEqualToString:oldToken]) {

            [[NSUserDefaults standardUserDefaults]setObject:token forKey:@"Token"];

            [[NSUserDefaults standardUserDefaults]synchronize];

        }

        //给后台发送Token

        

        

        /*UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"token" message:token delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];

         alert.alertViewStyle = UIAlertViewStylePlainTextInput;

         [alert textFieldAtIndex:0].text = token;

         [alert show];*/

        

    }

     

    - (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error

    {

        // re-post ( broadcast )

        //[[NSNotificationCenter defaultCenter] postNotificationName:CDVRemoteNotificationError object:error];

        NSLog(@">>>>注册远程推送失败<<<<");

    }

     

    //收到远程通知

    - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

    {

        if([UIApplication sharedApplication].applicationState == UIApplicationStateActive)

        {

            UILocalNotification *localNotification = [[UILocalNotification alloc] init];

            localNotification.alertAction = @"Ok";

            localNotification.userInfo = userInfo;

            localNotification.soundName = UILocalNotificationDefaultSoundName;

            localNotification.alertBody = [[userInfo objectForKey:@"aps"] objectForKey:@"alert"];

            

            [[UIApplication sharedApplication] presentLocalNotificationNow:localNotification];

        }

        

    }

     

    - (void)applicationWillResignActive:(UIApplication *)application {

        // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.

        // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.

    }

     

    - (void)applicationDidEnterBackground:(UIApplication *)application {

        // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.

        // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.

    }

     

    - (void)applicationWillEnterForeground:(UIApplication *)application {

        // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.

    }

     

    - (void)applicationDidBecomeActive:(UIApplication *)application {

        // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.

    }

     

    - (void)applicationWillTerminate:(UIApplication *)application {

        // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.

    }

  • 相关阅读:
    XML验证框架在项目中的应用
    Container.DataItem几种方式.
    XMLSpy 的使用
    介绍一个工具给大家,做网站时,经常要上传文件到外网服务器,但是上传时往往需要很长时间,如果有一个文件对比工具……
    Xcopy 帮助.net 2005组件化开发
    不影响原有的onload方法的前提下,在页面中增加onload的执行方法
    如何将XSD文件以及引入import的文件生成相应的C#类。
    封装my97时间控件成asp.net 时间控件,支持多语言,皮肤,时间大小限制,时间格式验证功能,非常强大。
    参数化使用ADO.NET的OleDb方法时注意不能使用@参数
    提供一个通用的Javascript验证页面输入的脚本给大家,并希望大家提意见呀
  • 原文地址:https://www.cnblogs.com/CodingMann/p/4897780.html
Copyright © 2011-2022 走看看