我正在尝试调整这里为Smack 4.1.0 提供的示例.并有点困惑.
具体来说,我很难理解GcmPacketExtension现在应该扩展什么,构造函数应该如何工作以及如何更新Providermanager.addExtensionProvider以配合它.
我敢肯定以前有人必须这样做但是我找不到任何例子,而且我似乎只是使用文档进行圈选.
任何帮助将不胜感激,我相信答案很简单!
当前代码(正在编译但未运行):
static {
ProviderManager.addExtensionProvider(GCM_ELEMENT_NAME, GCM_NAMESPACE, new ExtensionElementProvider<ExtensionElement>() {
@Override
public DefaultExtensionElement parse(XmlPullParser parser,int initialDepth) throws org.xmlpull.v1.XmlPullParserException,
IOException {
String json = parser.nextText();
return new GcmPacketExtension(json);
}
});
}
Run Code Online (Sandbox Code Playgroud)
和:
private static final class GcmPacketExtension extends DefaultExtensionElement {
private final String json;
public GcmPacketExtension(String json) {
super(GCM_ELEMENT_NAME, GCM_NAMESPACE);
this.json = json;
}
public String getJson() {
return json;
}
@Override
public String toXML() {
return String.format("<%s xmlns=\"%s\">%s</%s>",
GCM_ELEMENT_NAME, GCM_NAMESPACE,
StringUtils.escapeForXML(json), GCM_ELEMENT_NAME);
}
public …Run Code Online (Sandbox Code Playgroud)