我正在尝试在 openRTB protobuf 请求中创建扩展,但我不知道如何创建。 正如他们在文档(https://github.com/google/openrtb/wiki)中所说,我应该可以做这样的事情:
BidRequest request = BidRequest.newBuilder()
// ... add Imp, etc.
.addDevice(Device.newBuilder()
.setModel("Nexus 85")
// ... other standard Device fields
.setGeo(Geo.newBuilder()
.setCountry("USA")
.setCity("Newer York")
.zetZip("102879")
.setExtension(SpaceAdsExt.planet, "Mars")))
.build();
在此示例中,他们设置了一个名为 SpaceAdsExt.planet 的自定义扩展。我如何实现这样的扩展?
最佳答案
BidRequest
原型(prototype)为扩展保留了一定范围的标签号。根据其定义here ,标签200到999和2000到9999保留供交易所和项目扩展。您需要创建一个 .proto
文件,通过为这些标签编号之一定义扩展名来扩展 BidRequest
。看起来像这样:
extend com.google.openrtb.BidRequest {
optional MyExtension my_extension = 2111;
}
有关更多详细信息,请参阅 Protocol Buffer 文档 here 。需要注意的一件事是,您必须为您的扩展选择一个唯一的标签号 - 如果其他人定义了与您选择的标签号相同的扩展,则可能会导致数据损坏。我建议与 OpenRTB 开发人员联系,看看他们是否有确保分机号唯一性的约定。
关于java - 使用 Java 在 openRTB 中创建 protobuf 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37143416/