iOS调用js方法传JSon字符串

前言

博主使用的是基于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。

猜你喜欢

转载自blog.csdn.net/tianxiawoyougood/article/details/77050769