Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
-ios我想注册iphone';s设备\u令牌(以DB为单位)。但有时这种情况会失败_Ios_Devicetoken - Fatal编程技术网

-ios我想注册iphone';s设备\u令牌(以DB为单位)。但有时这种情况会失败

-ios我想注册iphone';s设备\u令牌(以DB为单位)。但有时这种情况会失败,ios,devicetoken,Ios,Devicetoken,我让我的应用程序在安装后第一次启动时注册iPhone的设备令牌。但有时这种情况会失败。 但应用程序需要设备_令牌才能正常运行 - (void) application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{ NSString * useruuId = [AppDelegate getUUID]; NSString * token =

我让我的应用程序在安装后第一次启动时注册iPhone的设备令牌。但有时这种情况会失败。 但应用程序需要设备_令牌才能正常运行

- (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(@“您的设备令牌:%@”,您的设备令牌);
} 
让我们试试这个