我已经实现了将设备令牌和应用版本发送到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 :(得分: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中编写的代码,以便正确理解。 希望这有帮助。