XGPush集成(信鸽集成)
Posted 小敏的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 复制代码
以上是关于XGPush集成(信鸽集成)的主要内容,如果未能解决你的问题,请参考以下文章