-ios我想注册iphone';s设备\u令牌(以DB为单位)。但有时这种情况会失败
我让我的应用程序在安装后第一次启动时注册iPhone的设备令牌。但有时这种情况会失败。 但应用程序需要设备_令牌才能正常运行-ios我想注册iphone';s设备\u令牌(以DB为单位)。但有时这种情况会失败,ios,devicetoken,Ios,Devicetoken,我让我的应用程序在安装后第一次启动时注册iPhone的设备令牌。但有时这种情况会失败。 但应用程序需要设备_令牌才能正常运行 - (void) application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{ NSString * useruuId = [AppDelegate getUUID]; NSString * token =
- (void) application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{
NSString * useruuId = [AppDelegate getUUID];
NSString * token = [NSString stringWithFormat:@"%@", deviceToken];
token = [token stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];
token = [token stringByReplacingOccurrencesOfString:@" " withString:@""];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
NSString * postBody = [NSString stringWithFormat:@"user=%@&token=%@",useruuId,token];
NSString * endpoint = [NSString stringWithFormat: @"%@device_register.php",APNSPATH ];
NSMutableURLRequest * request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:endpoint] cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:kRequestTimeInterval];
request.HTTPMethod = @"POST";
request.HTTPBody = [postBody dataUsingEncoding:NSUTF8StringEncoding];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
NSError * error = nil;
NSHTTPURLResponse *response;
[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
//NSLog(@"statusCode(device_register.php):%ld",response.statusCode);
if(response.statusCode== 200)
{
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:kRegisteredID];
[[NSUserDefaults standardUserDefaults] synchronize];
break;
}
});
-(void)应用程序:(UIApplication*)应用程序DIDregisterforRemotionTificationswithDeviceToken:(NSData*)deviceToken{
NSString*useruuId=[AppDelegate getUUID];
NSString*标记=[NSString stringWithFormat:@“%@”,deviceToken];
令牌=[token stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@”“];
token=[token StringByReplacingOfString:@“with String:@]”的发生率;
调度异步(调度获取全局队列(调度队列优先级默认为0)^{
NSString*postBody=[NSString stringWithFormat:@“user=%@&token=%@”,useruuId,token];
NSString*端点=[NSString stringWithFormat:@“%@device_register.php”,APNSPATH];
NSMutableURLRequest*request=[[NSMutableURLRequest alloc]initWithURL:[NSURL URLWithString:endpoint]缓存策略:NSURLRequestReloadIgningCacheData timeoutInterval:kRequestTimeInterval];
request.HTTPMethod=@“POST”;
request.HTTPBody=[postBody dataUsingEncoding:NSUTF8StringEncoding];
[请求设置值:@“应用程序/x-www-form-urlencoded”forHTTPHeaderField:@“内容类型”];
n错误*错误=nil;
NSHTTPURLRResponse*响应;
[NSURLConnection sendSynchronousRequest:请求返回应答:&响应错误:&错误];
//NSLog(@“statusCode(device_register.php):%ld”,response.statusCode);
if(response.statusCode==200)
{
[[NSUserDefaults standardUserDefaults]setBool:YES-forKey:kRegisteredID];
[[NSUserDefaults standardUserDefaults]同步];
打破
}
});
}
我知道[didRegisterForRemoteNotificationsWithDeviceToken]方法只在安装应用程序后调用一次。
所以,如果我无法在didRegisterForRemoteNotificationsWithDeviceToken中将设备\u令牌注册到服务器,那么下次我将无法获取设备\u令牌。所以我无法在服务器中注册令牌
失败时如何获取设备\u令牌?
此外,是否存在应用程序无法从苹果服务器获取设备令牌的情况?
如果是,我如何获得设备\u令牌 首先,您必须在临时配置文件中启用推送通知。然后您必须使用以下代码来获取设备令牌
- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
NSString *yourDeviceToken = [[deviceToken description] stringByTrimmingCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@"<>"]];
yourDeviceToken = [yourDeviceToken stringByReplacingOccurrencesOfString:@" " withString:@""];
NSLog(@"your device token: %@", yourDeviceToken);
}
-(无效)应用程序:(UIApplication*)应用程序注册器用于删除deviceToken:(NSData*)deviceToken
{
NSString*yourDeviceToken=[[deviceToken描述]stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@”“];
yourDeviceToken=[yourDeviceToken StringByReplacingOfString:@”“with String:@”“]的发生率;
NSLog(@“您的设备令牌:%@”,您的设备令牌);
}
让我们试试这个