前言
博主使用的是基于Cordova的项目。有个需求是推送消息到来的时候,发送事件和数据给web页面。
过程
一件很简单的事情嘛,直接上代码:
NSError *error;
NSData *infoData = [NSJSONSerialization dataWithJSONObject:info options:NSJSONWritingPrettyPrinted error:&error];
NSString *infoString = @"";
if (infoData) {
infoString = [[NSString alloc] initWithData:infoData encoding:NSUTF8StringEncoding];
}
NSString *jsStr = [NSString stringWithFormat:@"apsNotificationInfo('%@')",infoString];
[self.viewController.commandDelegate evalJs:jsStr];
运行,查看结果,web没有反应。。。什么鬼��
(一下省略无数的猜测和实验)
。。。。。。。。
解决方式
NSError *error;
NSData *infoData = [NSJSONSerialization dataWithJSONObject:info options:NSJSONWritingPrettyPrinted error:&error];
NSString *infoString = @"";
if (infoData) {
infoString = [[NSString alloc] initWithData:infoData encoding:NSUTF8StringEncoding];
infoString = [infoString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
infoString = [infoString stringByReplacingOccurrencesOfString:@"\n" withString:@""];
}
NSString *jsStr = [NSString stringWithFormat:@"apsNotificationInfo('%@')",infoString];
[self.viewController.commandDelegate evalJs:jsStr];
结论:JSON字符串作为js方法的参数的时候,需要去掉\n。