zoukankan      html  css  js  c++  java
  • XGPush集成(信鸽集成)

      1 1 #import "AppDelegate.h"
      2   2 #import "XGPush.h"
      3   3 #import "XGSetting.h"
      4   4 
      5   5 #define _IPHONE80_ 80000
      6   6 
      7   7 @implementation AppDelegate 
      8   8 - (void)registerPushForIOS8{
      9   9 #if __IPHONE_OS_VERSION_MAX_ALLOWED >= _IPHONE80_
     10  10     
     11  11     //Types
     12  12     UIUserNotificationType types = UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert;
     13  13     
     14  14     //Actions
     15  15     UIMutableUserNotificationAction *acceptAction = [[UIMutableUserNotificationAction alloc] init];
     16  16     
     17  17     acceptAction.identifier = @"ACCEPT_IDENTIFIER";
     18  18     acceptAction.title = @"Accept";
     19  19     
     20  20     acceptAction.activationMode = UIUserNotificationActivationModeForeground;
     21  21     acceptAction.destructive = NO;
     22  22     acceptAction.authenticationRequired = NO;
     23  23     
     24  24     //Categories
     25  25     UIMutableUserNotificationCategory *inviteCategory = [[UIMutableUserNotificationCategory alloc] init];
     26  26     
     27  27     inviteCategory.identifier = @"INVITE_CATEGORY";
     28  28     
     29  29     [inviteCategory setActions:@[acceptAction] forContext:UIUserNotificationActionContextDefault];
     30  30     
     31  31     [inviteCategory setActions:@[acceptAction] forContext:UIUserNotificationActionContextMinimal];
     32  32     
     33  33     NSSet *categories = [NSSet setWithObjects:inviteCategory, nil];
     34  34     
     35  35     
     36  36     UIUserNotificationSettings *mySettings = [UIUserNotificationSettings settingsForTypes:types categories:categories];
     37  37     
     38  38     [[UIApplication sharedApplication] registerUserNotificationSettings:mySettings];
     39  39     
     40  40     
     41  41     [[UIApplication sharedApplication] registerForRemoteNotifications];
     42  42 #endif
     43  43 }
     44  44 
     45  45 - (void)registerPush{
     46  46     [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];
     47  47 }
     48  48 
     49  49 
     50  50 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
     51  51 {
     52  52     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
     53  53 
     54  54     //注册推送
     55  55      [XGPush startApp:2200065428 appKey:@"IXJ8177VC3BG"];
     56  56     
     57  57     //注销之后需要再次注册前的准备
     58  58     void (^successCallback)(void) = ^(void){
     59  59         //如果变成需要注册状态
     60  60         if(![XGPush isUnRegisterStatus])
     61  61         {
     62  62             //iOS8注册push方法
     63  63 #if __IPHONE_OS_VERSION_MAX_ALLOWED >= _IPHONE80_
     64  64             
     65  65             float sysVer = [[[UIDevice currentDevice] systemVersion] floatValue];
     66  66             if(sysVer < 8){
     67  67                 [self registerPush];
     68  68             }
     69  69             else{
     70  70                 [self registerPushForIOS8];
     71  71             }
     72  72             NSLog(@"sysVer ----------- %g", sysVer);
     73  73 #else
     74  74             //iOS8之前注册push方法
     75  75             //注册Push服务,注册后才能收到推送
     76  76             [self registerPush];
     77  77 #endif
     78  78         }
     79  79     };
     80  80     [XGPush initForReregister:successCallback];
     81  81     
     82  82     //推送反馈回调版本示例
     83  83     void (^successBlock)(void) = ^(void){
     84  84         //成功之后的处理
     85  85         NSLog(@"[XGPush]handleLaunching's successBlock");
     86  86     };
     87  87     
     88  88     void (^errorBlock)(void) = ^(void){
     89  89         //失败之后的处理
     90  90         NSLog(@"[XGPush]handleLaunching's errorBlock");
     91  91     };
     92  92     [XGPush handleLaunching:launchOptions successCallback:successBlock errorCallback:errorBlock];
     93  93     //角标清0
     94  94     [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
     95  95     
     96  96     //清除所有通知(包含本地通知)
     97  97     [XGPush clearLocalNotifications];
     98  98     //本地推送示例
     99  99 //    [XGPush handleLaunching:launchOptions successCallback:successBlock errorCallback:errorBlock];
    100 100 //    
    101 101 //    NSDate *fireDate = [[NSDate new] dateByAddingTimeInterval:5];
    102 102 //    
    103 103 //    NSMutableDictionary *dicUserInfo = [[NSMutableDictionary alloc] init];
    104 104 //    [dicUserInfo setValue:@"myid" forKey:@"clockID"];
    105 105 //    NSDictionary *userInfo = dicUserInfo;
    106 106 //    
    107 107 //    [XGPush localNotification:fireDate alertBody:@"测试本地推送" badge:2 alertAction:@"确定" userInfo:userInfo];
    108 108    [self.window makeKeyAndVisible];
    109 109     return YES;
    110 110 }
    111 111 #pragma mark - Notification
    112 112 
    113 113 #if __IPHONE_OS_VERSION_MAX_ALLOWED >= _IPHONE80_
    114 114 
    115 115 //注册UserNotification成功的回调
    116 116 - (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings
    117 117 {
    118 118     //用户已经允许接收以下类型的推送
    119 119     //UIUserNotificationType allowedTypes = [notificationSettings types];
    120 120     NSLog(@"didRegisterUserNotificationSettings");
    121 121 }
    122 122 
    123 123 //按钮点击事件回调
    124 124 - (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo completionHandler:(void (^)())completionHandler{
    125 125     if([identifier isEqualToString:@"ACCEPT_IDENTIFIER"]){
    126 126         NSLog(@"ACCEPT_IDENTIFIER is clicked");
    127 127     }
    128 128     
    129 129     completionHandler();
    130 130 }
    131 131 
    132 132 #endif
    133 133 
    134 134 - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    135 135     
    136 136     NSLog(@"Token----------------: %@", [[NSString alloc] initWithData:deviceToken encoding:NSUTF8StringEncoding]);
    137 137     
    138 138     NSString * deviceTokenStr = [XGPush registerDevice:deviceToken];
    139 139     
    140 140     //注册设备
    141 141     [XGPush setAccount:@"123456"];
    142 142 //    [XGPush registerDevice:deviceToken];
    143 143     
    144 144     void (^successBlock)(void) = ^(void){
    145 145         //成功之后的处理
    146 146         NSLog(@"[XGPush]register successBlock ,deviceToken: %@",deviceTokenStr);
    147 147     };
    148 148     
    149 149     void (^errorBlock)(void) = ^(void){
    150 150         //失败之后的处理
    151 151         NSLog(@"[XGPush]register errorBlock");
    152 152     };
    153 153     
    154 154     [XGPush registerDevice:deviceToken successCallback:successBlock errorCallback:errorBlock];
    155 155     
    156 156     //打印获取的deviceToken的字符串
    157 157     NSLog(@"deviceTokenStr is %@",deviceTokenStr);
    158 158 }
    159 159 
    160 160 //如果deviceToken获取不到会进入此事件
    161 161 - (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err {
    162 162     
    163 163     NSString *str = [NSString stringWithFormat: @"Error: %@",err];
    164 164     
    165 165     NSLog(@"%@",str);
    166 166     
    167 167 }
    168 168 
    169 169 - (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo
    170 170 {// 取得 APNs 标准信息内容
    171 171     NSDictionary *aps = [userInfo valueForKey:@"aps"];
    172 172     NSString *content = [aps valueForKey:@"alert"]; //推送显示的内容
    173 173     NSInteger badge = [[aps valueForKey:@"badge"] integerValue]; //badge数量
    174 174     //    badge += [UIApplication sharedApplication].applicationIconBadgeNumber;
    175 175     
    176 176     NSLog(@"didReceiveRemoteNotification badge = %ld, systemBadgeNumber = %ld", (long)badge, (long)[UIApplication sharedApplication].applicationIconBadgeNumber);
    177 177     //    [APService setBadge:badge];
    178 178     NSLog(@"data:%@ --- dic:%@", aps, userInfo);
    179 179     
    180 180     [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
    181 181     //    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:badge];
    182 182     NSString *sound = [aps valueForKey:@"sound"]; //播放的声音
    183 183     
    184 184     // 取得自定义字段内容
    185 185     NSString *customizeField1 = [userInfo valueForKey:@"customizeField1"]; //自定义参数,key是自己定义的
    186 186     NSLog(@"content =[%@], badge=[%ld], sound=[%@], customize field =[%@]",content,(long)badge,sound,customizeField1);
    187 187     //推送反馈(app运行时)
    188 188     [XGPush handleReceiveNotification:userInfo];
    189 189     
    190 190 
    191 191 }
    192 192 
    193 193 -(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{
    194 194     //notification是发送推送时传入的字典信息
    195 195     [XGPush localNotificationAtFrontEnd:notification userInfoKey:@"clockID" userInfoValue:@"myid"];
    196 196     
    197 197     //删除推送列表中的这一条
    198 198 //    [XGPush delLocalNotification:notification];
    199 199     //[XGPush delLocalNotification:@"clockID" userInfoValue:@"myid"];
    200 200     
    201 201     //清空推送列表
    202 202     //[XGPush clearLocalNotifications];
    203 203 }
    204 204 
    205 205 
    206 206 @end
    207 复制代码
  • 相关阅读:
    CodeForces 363B Fence
    php结合redis实现高并发下的抢购、秒杀功能 (转载)
    PHP+Mysql基于事务处理实现转账功能的方法
    Yahoo网站性能优化的34条军规
    Cookie/Session机制详解
    PHP根据传入参数合并多个JS和CSS文件的简单实现
    PHP 使用redis实现秒杀
    PHP 常用字符串函数
    mysqldump
    局域网下关闭别人的电脑
  • 原文地址:https://www.cnblogs.com/fengmin/p/5358675.html
Copyright © 2011-2022 走看看