我正在我的应用程序中实现推送通知服务。我以Easy Apns风格创建了一个服务,但方式更简单。我有一个使用 MySql 数据库来存储应用程序令牌的服务和一个访问数据库、准备通知并发送它们的第二个服务。
它有效,但我不确定我的注册部分(在客户端)是否正确。
应用委托方法:
- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken {
NSString *devToken = [[[[deviceToken description]
stringByReplacingOccurrencesOfString:@"<"withString:@""]
stringByReplacingOccurrencesOfString:@">" withString:@""]
stringByReplacingOccurrencesOfString: @" " withString: @""];
NSString *urlString = [@"/apns.php?"stringByAppendingString:@"task=register"];
urlString = [urlString stringByAppendingString:@"&appname="];
NSString *appName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleDisplayName"];
urlString = [urlString stringByAppendingString:appName];
urlString = [urlString stringByAppendingString:@"&devicetoken="];
urlString = [urlString stringByAppendingString:devToken];
NSString *host = @"myservice.php";
NSURL *url = [[NSURL alloc] initWithScheme:@"http" host:host path:urlString];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
}
每次重新启动应用程序时,此代码都会更新令牌。这是对的吗?注册阶段不应该只发生一次(例如,用户第一次接受通知服务)?就我而言,每次重新启动应用程序时,都会将令牌添加到我的数据库中(因此,如果它是复制的令牌,我必须从服务器端进行控制)。