无法从 WKUserContentController didReceive WKScriptMessage 获取字符串数据

问题描述

我的方法调用

func userContentController(_ userContentController: WKUserContentController,didReceive message: WKScriptMessage) {
    print("message.body: \(message.body)")
    
    if let messageBody = message.body as? [String: Any] {
        print("messageBody: \(messageBody)") //this is not triggered
        if let data = messageBody["data"] as? Nsstring {
            print("DATA: \(data)")
        }
    }

邮件正文是:

message.body: {"type":3,"data":"{\"title\":\"Verzamelen\",\"content\":\"Loongegevens...\"}"}

但在那之后我无法检索“数据”字段。我错过了什么?

解决方法

该问题可能与 String 中的反斜杠转义有关。有效的是使用 JSON 解码器对其进行解码:

import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.gson.GsonFactory;

GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(new NetHttpTransport(),new GsonFactory())
.setAudience(Arrays.asList(CRLConstants.IOS_CLIENT_ID,CRLConstants.ANDROID_CLIENT_ID_RELEASE,CRLConstants.ANDROID_CLIENT_ID_DEBUG))
            .setIssuer("accounts.google.com")
            .build();