2011-11-29 53 views
0

我已经实现将设备令牌和应用程序版本发送到serverm。它在模拟器(硬编码数据)中工作正常,但在设备中不起作用。 任何形式的帮助,将不胜感激。 预先感谢您如何发送设备令牌和应用程序版本到服务器

下面是代码

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken { 


    // Get Bundle Info for Remote Registration (handy if you have more than one app) 
    NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"]; 

    // Prepare the Device Token for Registration (remove spaces and < >) 
    NSString *deviceToken = [[[[devToken description] 
           stringByReplacingOccurrencesOfString:@"<"withString:@""] 
           stringByReplacingOccurrencesOfString:@">" withString:@""] 
          stringByReplacingOccurrencesOfString: @" " withString: @""]; 

    NSMutableString *urlString = [[BASE_URL mutableCopy] autorelease]; 
    [urlString appendFormat:@"traceDeviceTokenId?tokenid=%@&version=%@",deviceToken, appVersion]; 
    NSURL *url = [NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 

    NSString *postLength = [NSString stringWithFormat:@"%d", [urlString length]];  
    NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease]; 
    [request setURL:url]; 
    [request setHTTPMethod:@"POST"]; 

    [request setValue:postLength forHTTPHeaderField:@"Content-Length"]; 
    [request setValue:@"text/xml; charset=utf-16" forHTTPHeaderField:@"Content-Type"]; 
    [request setHTTPBody:[urlString dataUsingEncoding:NSUTF16StringEncoding]]; 
    NSLog(@"Request xml>>>>>> %@", urlString); 

    NSError *error; 
    NSURLResponse *response; 
    NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 

    NSString *responseXml = [[NSString alloc] initWithData:urlData encoding:NSUTF16StringEncoding]; 
    NSLog(@"Response xml>>>>>> = %@", responseXml); 

} 

回答

0
- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken 
{ 

    NSString *strWithoutSpaces = [NSString stringWithFormat:@"%@",deviceToken]; 
    strWithoutSpaces = [strWithoutSpaces stringByReplacingOccurrencesOfString:@" " withString:@""];  
    strWithoutSpaces = [strWithoutSpaces stringByReplacingOccurrencesOfString:@"<" withString:@""]; 
    strDeviceToken = [strWithoutSpaces stringByReplacingOccurrencesOfString:@">" withString:@""]; 

    [self createRequestWithDeviceToken:strDeviceToken];  
} 

- (void) createRequestWithDeviceToken:(NSString*)deviceToken 
{  
     [[UIApplication sharedApplication]setNetworkActivityIndicatorVisible:YES]; 
     NSString *strURL = [[NSString alloc] initWithFormat:@"%@%@",APNS_DEVICE_REGISTRATION_URL, deviceToken]; 
     [self prepareConnectionForWebService:strURL delegateHandler:self]; 
     [strURL release]; 

} 

- (void) prepareConnectionForWebService:(NSString*)webServiceURL delegateHandler:(id)object 
{ 
    //Create HTTP request 
    objRequest = [[RequestCreation alloc] init]; 
    [self.objRequest initRequestWithURL:webServiceURL withMethodType:@"GET" withContentType:@"text/html" andBodyData:nil]; 

    //Placing URLConnection with request. 
    objConnection = [[[ConnectionCreation alloc]init] autorelease]; 
    self.objConnection.delegate = object; 
    [self.objConnection initWithRequest:self.objRequest.objURLRequest]; 
    [objRequest release]; 
} 

- (void) initWithRequest:(NSMutableURLRequest *)requestedURL 
{ 
    self.urlConnection = [NSURLConnection connectionWithRequest:requestedURL delegate:self]; 
    if(self.urlConnection) 
    { 
     receivedData=[[NSMutableData alloc] init]; 
    } 
    else 
    { 
     //infiorm the user that the connection is failed 
     UIAlertView *alert =[[UIAlertView alloc]initWithTitle:@"Connection Failure" message:@"Unable to connect" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil]; 
     [alert show]; 
     [alert release]; 

    } 
} 

我justed粘贴目前运行我的应用程序的代码。只要通过代码来了解你出错的地方。为了正确理解,用小方法分解写在didRegisterForRemoteNotificationsWithDeviceToken中的代码。 希望得到这个帮助。

相关问题