2016-05-10 2 views
1

Я пытаюсь создать расширение в запросе protobuf openRTB, но я не знаю, как это сделать. Как говорится в их документации (https://github.com/google/openrtb/wiki) я могу сделать что-то подобное:Создайте расширение protobuf в openRTB с Java

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. Как я могу реализовать расширение, подобное этому?

ответ

1

Протокол BidRequest proto имеет определенные диапазоны номеров тегов, зарезервированных для расширений. Согласно его определению here, теги от 200 до 999 и с 2000 по 9999 зарезервированы для расширения посредством обменов и проектов. Вам нужно будет создать файл .proto, который расширяет BidRequest, указав расширение для одного из этих номеров тегов. Это будет выглядеть примерно так:

extend com.google.openrtb.BidRequest { 
    optional MyExtension my_extension = 2111; 
} 

Более подробно см буферных документаций протокола here. Остерегайтесь того, что вы должны выбрать уникальный номер тега для своего расширения - если кто-то другой определяет расширение с тем же номером тега, который вы выбрали, может произойти повреждение данных. Я бы рекомендовал проверить с помощью разработчиков OpenRTB, чтобы убедиться, что у них есть соглашение для обеспечения уникальности номеров внутренних номеров.

Смежные вопросы