Feed ํ์
BuzzAd-Benefit SDK: Type B - Feed
๋ณธ ๊ฐ์ด๋๋ BuzzAd-Benefit SDK์ ํผ๋ ํ์ ๊ด๊ณ ๋ฅผ ์ฐ๋ํ๋ ๋ฐฉ๋ฒ์ ๋ค๋ฃจ๋ ๋ฌธ์์ ๋๋ค.
โป ์ฃผ์์ฌํญ
Feed ํ์ ์ ์ฐ๋ํ๊ธฐ ์ ,ย ๊ณตํต ๊ฐ์ด๋์ ์ฐ๋ ์ฌํญ์ ๋ชจ๋ ์ ์ฉํ๋์ง ํ์ธํด์ฃผ์ธ์.
Feed ์ ์ปค์คํฐ๋ง์ด์ฆ๋ ์๋จ ํด๋ฐ, ๊ด๊ณ ๋ฆฌ์คํธ ์์ดํ ์์ญ, ํค๋, ๋์์ธ ์ปค์คํฐ๋ง์ด์ฆ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
ย
(์ค์) Basic Usage ๋ฅผ ๋ชจ๋ ์ ์ฉํ ๋ค, ํ๋จ์ Advanced Usage๋ฅผ ์ ์ฉํดํด์ฃผ์ธ์.
ย
Index
ย
Basic Usage
FeedConfig
ย ๋ฐย FeedHandler
ย ์ค์
Feed unit id๋กย
FeedConfig
๋ฅผ ์ค์ ํฉ๋๋ค.FeedConfig
ย ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌยFeedHandler
๋ฅผ ์์ฑํฉ๋๋ค.startFeedActivity()
๋ฅผ ํธ์ถํ์ฌ Feed ์กํฐ๋นํฐ๋ฅผ ์คํํฉ๋๋ค.
ย
final FeedConfig feedConfig = new FeedConfig.Builder("YOUR_FEED_UNIT_ID").build();
final FeedHandler feedHandler = new FeedHandler(feedConfig);
feedHandler.startFeedActivity(this);
ย
์คํผ์์ Feed ์ ์ฐ๋ํ๋ ๊ฒฝ์ฐ, FeedConfig ์ค์ ์ autoLoadingEnabled
๊ฐ์ true ๋ก ์ค์ ํด์ผ ํฉ๋๋ค.
final FeedConfig feedConfig = new FeedConfig.Builder(context, "YOUR_FEED_UNIT_ID")
...
.autoLoadingEnabled(true)
...
.build();
ย
ย
Recommended Usage
Feed์ ๊ด๊ณ ํํฉ ํ์ธ
Basic Usage์ฒ๋ผ ๋ฐ๋ก startFeedActivity๋ฅผ ํธ์ถํ๋ ๊ฒฝ์ฐ Feed ์กํฐ๋นํฐ๊ฐ ์คํ๋๋ฉด์ ๊ด๊ณ ๋ฅผ ๋ก๋ํ๊ฒ ๋์ด, ์ ์ ์๊ฒ ๋ณด์ฌ์ค ์ ์๋ ๊ด๊ณ ๊ฐ ์์ด ๋น ํ๋ฉด์ด ๋ณด์ด๊ฒ ๋ ์๋ ์์ต๋๋ค. ์ด์ Feed ์กํฐ๋นํฐ๋ฅผ ์คํํ๊ธฐ ์ ์ย preload()
๋ฅผ ํธ์ถํ ๋คย onPreloaded()
ย ์ฝ๋ฐฑ์ ํธ์ถํ์ฌ ์ํ๋ฅผ ํ์ธํ ํ ๊ด๊ณ ๊ฐ ์์๋๋ง ํผ๋๋ก ์ง์
ํ ์ ์๋๋ก ํ๋ ๊ฒ์ ์ถ์ฒํฉ๋๋ค.
feedHandler.getSize()
ย : ๊ด๊ณ ์ ๊ฐ์feedHandler.getTotalReward()
ย : ์ ๋ฆฝ ๊ฐ๋ฅํ ์ด ํฌ์ธํธ ๊ธ์ก
ย
feedHandler.preload(new FeedHandler.FeedPreloadListener() {
@Override
public void onPreloaded() {
int feedAdSize = feedHandler.getSize();
int feedTotalReward = feedHandler.getTotalReward();
}
@Override
public void onError(AdError error) {
// ๊ด๊ณ ๊ฐ ์์ ๊ฒฝ์ฐ ํธ์ถ๋ฉ๋๋ค. error๋ฅผ ํตํด ๋ฐ์ํ error์ ์์ธ์ ์ ์ ์์ต๋๋ค
}
});
ย
์ ์์ฌํญ
ํ๋ฆฌ๋ก๋ํย
FeedHandler
์ย ๋์ผํ ๊ฐ์ฒด์์ยstartFeedActivity()
๋ฅผ ํธ์ถํด์ผ ํฉ๋๋ค.์ฃผ์์ฌํญย : ํ๋์ย
FeedHandler
ย ์ธ์คํด์ค์์ ๊ด๊ณ ๋ฅผ load/preload ํ ๊ฒฝ์ฐ, ๊ทธ ์ธ์คํด์ค๋ ๊ณ์ ๊ฐ์ ๊ด๊ณ ๋ฅผ ๋ค๊ณ ์๊ฒ ๋ฉ๋๋ค. ๊ทธ๋์ activity์์ ์ ์ ๊ฐ ์ดํํ๋๋ผ๋ ๋ค์ ํด๋น ์ธ์คํด์ค๋ก startFeedActivity๋ฅผ ํ๋ ๊ฒฝ์ฐ ๊ฐ์ ๊ด๊ณ ๋ฆฌ์คํธ๋ฅผ ๋ณด๊ฒ ๋ฉ๋๋ค. ๋ง์ฝ ํผ๋์ ์ง์ ํ ๋๋ง๋ค ์๋ก ๊ด๊ณ ๊ฐ ๋ก๋๋๋ ๊ฒ์ ์ํ๋ ๊ฒฝ์ฐ ์๋ก์ดยFeedHandler
ย ์ธ์คํด์ค๋ฅผ ๋ง๋ค์ด์ยstartFeedActivity()
๋ฅผ ํธ์ถํด์ผ ํฉ๋๋ค.
FeedHandler๋ฅผ ์ผํ์ฑ์ผ๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ preload ๊ธฐ๋ฅ์ ์ฌ์ฉํ ๊ฒฝ์ฐ, preload์ ๋ํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ง ๋ชปํ ์ ์์ต๋๋ค. Memory Leak ๋ฐฉ์ง๋ฅผ ์ํด feedHandler์ weakReference๋ฅผ ์ ์ฉํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. FeedHandler์ ๋ณ์ ์ ์ธ์ ์ง์ญ๋ณ์๊ฐ ์๋ Class ๋ณ์๋ก ํ๋ ๋ฑ ์ผํ์ ์ด์ง ์์ ๋ฐฉ์์ผ๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ์ ์ผ ํฉ๋๋ค.
ย
Advanced Usage
๋์์ธ ์ปค์คํฐ๋ง์ด์ฆ
(์ค์) Feed Customization ์ฃผ์์ฌํญ
FeedToolbarHolder, FeedAdsAdapter, FeedHeaderViewAdapter class์ custom class๋ฅผ ์์ฑํ ๋ ๋ค์ ์กฐ๊ฑด์ค ํ๋๋ฅผ ์ฌ์ฉํด์ผํฉ๋๋ค.
๊ฐ ํด๋์ค๋ inner class ๊ฐ ์๋์ด์ผ ํฉ๋๋ค.
Inner class๋ก ์์ฑ์ ํด์ผํ ๊ฒฝ์ฐ, public static class๋ก ์ ์ธ์ด ๋์ด์ผ ํฉ๋๋ค.
์์ ์กฐ๊ฑด์ ๋ง์ง ์๋ ๊ฒฝ์ฐ, class๋ฅผ ์ฐพ์ง๋ชปํ๋ ํ์์ด ๋ฐ์ํ์ฌ customization์ด ์ ์ฉ๋์ง ์์ต๋๋ค.
ย
ํด๋ฐ Customization
Feed ์๋จ์ ํด๋ฐ๋ฅผ ์ปค์คํฐ๋ง์ด์งํ ์ ์์ต๋๋ค.
FeedToolbarHolder
๋ฅผ ๊ตฌํํ๋ class ๋ฅผ ์์ฑํฉ๋๋ค.FeedConfig
ย ๋น๋ ์์ ์ ํด๋นยFeedToolbarHolder
ย class ๋ฅผ ์ง์ ํฉ๋๋ค.ย
ํด๋ฐ Height ๋ณ๊ฒฝ
Customize ๋ toolbar๊ฐ ๋ค์ด๊ฐ๋ layout์ height๊ฐ์ด ๊ธฐ๋ณธ์ ์ผ๋ก ๊ณ ์ ๋์ด ์์ต๋๋ค. Toolbar์ height ๊ฐ์ ์์ ํ๊ณ ์ถ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๋ฅผ ์ถ๊ฐ ํด์ผํฉ๋๋ค.
ย
ย
Feed์ ํค๋ Customization
Feed ์๋จ์ ํค๋ ์์ญ์ ์ปค์คํฐ๋ง์ด์งํ์ฌ, ์ ์ ์๊ฒ ํด๋น ํผ๋๊ฐ ์ด๋ค ๊ณต๊ฐ์ธ์ง ์์ธํ ์๋ดํ ์ ์์ต๋๋ค.
FeedHeaderViewAdapter
ย ๋ฅผ ๊ตฌํํ๋ class ๋ฅผ ์์ฑํฉ๋๋ค.FeedConfig ๋น๋ ์์ ์ ํด๋น FeedHeaderViewAdapter class ๋ฅผ ์ง์ ํฉ๋๋ค.
ย
Feed ๊ด๊ณ ๋ฆฌ์คํธ ์์ดํ ์์ญ Customization
Feed์ ๊ด๊ณ ๋ฆฌ์คํธ ์์ดํ ๋ทฐ๋ฅผ ์ปค์คํฐ๋ง์ด์งํ๊ณ ๊ด๊ณ ์ด๋ฒคํธ์ ๋ํ ์ฝ๋ฐฑ์ ๋ฑ๋กํ ์ ์์ต๋๋ค.
AdsAdapter
ย ๋ฅผ ์์๋ฐ๋ class ๋ฅผ ๊ตฌํํฉ๋๋ค.onCreateViewHolder
,ยonBindViewHolder
ย ๋ฅผ ๊ตฌํํด Feed ๋ฆฌ์คํธ์ ๋ณด์ฌ์คยitemView
ย ์ ๋ ์ด์์ ๋ฐ ๋ฐ์ธ๋ฉ ๋ก์ง์ ์ปค์คํฐ๋ง์ด์งํฉ๋๋ค.CtaView์ getCtaTextView() ๋ฐ getRewardImageView() ํจ์๋ฅผ ํธ์ถํ์ฌ CtaView์ ๋ณด์ฌ์ง๋ ํ ์คํธ ๋ฐ ๋ฆฌ์๋ ์ด๋ฏธ์ง์ ๋ํ customization์ ํ ์ ์์ต๋๋ค. (์ข ๋ ์ ์ฐํ customization์ ์ํด View๋ฅผ ์๋ก ๋ง๋ค๊ณ ์ถ์ ๊ฒฝ์ฐ์๋ ์๋ CtaView Customization ์ฐธ์กฐ)
(optional)ย
onImpressed
,ยonClicked
,ยonRewardRequested
,ยonRewarded
,ยonParticipated
๋ฅผ ์ค๋ฒ๋ผ์ด๋ํ์ฌ ๊ด๊ณ ์ ์ํ๋ ์ , ํด๋ฆญ, ๋ฆฌ์๋ ์์ฒญ, ๋ฆฌ์๋ ์ง๊ธ ๊ฒฐ๊ณผ, ์ฐธ์ฌ์๋ฃ์ ๋ํ ์ด๋ฒคํธ ์ฝ๋ฐฑ์ ๋ฐ์ ์ ์์ต๋๋ค (์ฝ๋ฐฑ์ ์ ์ ๋ฐ ๋์์ย ๋ฌธ์ ์ฐธ์กฐ)
FeedConfig
ย ๋น๋ ์์ ์ ํด๋นยAdsAdapter
ย class ๋ฅผ ์ง์ ํฉ๋๋ค.
ย
CtaView (๋ฒํผ) Customization
CtaView๋ฅผ Default๋ก ์ ๊ณต๋๋ View๊ฐ ์๋, ๋ค๋ฅธ ๋ชจ์์ View๋ก ๋ง๋ค๊ณ ์ถ์ผ์ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ด ์ค์ ์ ์งํํ๋ฉด ๋ฉ๋๋ค.
ย
ย
โป ์ฃผ์์ฌํญ
์ ์ ๊ฐ ์ ๋ฆฝ์ ๋ฐ์์ง ์๊ฐ์ด ์ผ๋ง ์ง๋์ง ์์์ ๋ฆฌ์๋๊ฐ ๋ถ์ฌ๋์ง ์๊ฑฐ๋ ๋๋ ์๋ ๊ด๊ณ ์์ฒด๊ฐ ๋ฆฌ์๋๋ฅผ ๊ฐ์ง๊ณ ์์ง ์์ ๊ฒฝ์ฐ๊ฐ ์์ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๊ด๊ณ ๋ ์ด์์์ ๊ตฌ์ฑํ ๋ Ad Properties๋ฅผ Assign ํ๋ ๊ณผ์ ์์ rewardImage์ rewardText์ ๋ํด์ reward > 0 ์ธ์ง ์ฒดํฌํด์ ๋ฆฌ์๋๋ฅผ ๋ณด์ฌ์ค์ง ๋ง์ง ๊ฒฐ์ ํ๋ ๋ก์ง์ด ํ์ํฉ๋๋ค (์๋์ ์ํ ์ฝ๋ ์ฐธ์กฐ).
ย
ย
Image ํ์ ์ ๊ด๊ณ ์ํฌํธ
Feed์ ํ ๋น๋๋ ๊ด๊ณ ์ ๊ฐ์๋ฅผ ๊ทน๋ํ ํ๊ธฐ ์ํด, ๊ธฐ์กด์ ๋ฒ์ฆ์คํฌ๋ฆฐ ์ ๊ธํ๋ฉด์ ํ ๋นํ๋ Full Screen ๊ด๊ณ ๋ฅผ ์ด๋ฏธ์ง์ ์ผ๋ถ๋ฅผ Cropping ํ ํ ์ฌ์ฉ (์ดํ "Image ํ์ ์ ๊ด๊ณ ")ํ์ค ์ ์์ต๋๋ค. (์์ธํ ๊ตฌํ ์ฌํญ์ ์๋ ๊ทธ๋ฆผ ์ฐธ์กฐ)
DefaultAdsAdapter ๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ ๋ณ๋์ ์ถ๊ฐ ์์ ์์ด๋ Image ํ์ ๊ด๊ณ ๋ฅผ ์ ๊ณต ๋ฐ์ผ์ค ์ ๊ฐ๋ฅํฉ๋๋ค. ์๋ ๋ด์ฉ์ Customization์ ์ํด AdsAdapterClass ๋ฅผ ๋ณ๋๋ก ์ค์ ํ์์ ๋์๋ง ํด๋น๋ฉ๋๋ค.
Image ํ์ ์ ๊ด๊ณ ์ ๊ฒฝ์ฐ ๊ธฐ์กด ๊ด๊ณ ๋ค๊ณผ ๋ค๋ฅด๊ฒ icon, title, description ์ ๋ด์ฉ์ด ์์ต๋๋ค. ๋๋ถ์ด ๊ด๊ณ ์์ญ ์ ์ฒด์ ์ํ์ ๊ธธ์ด๊ฐ ๊น๋๋ค. ์ด๋ฐ ์ํฉ์์ ๋ ์ด์์์ ์๋ง๊ฒ ๊ทธ๋ฆฌ๊ธฐ ์ํ ์ถ๊ฐ ์์ ์ ํ ํ ํด๋น ๊ด๊ณ ํ์ ์ ๋ฐ์ ์ ์๋๋ก FeedConfig ์ ์๋ก์ด ์ค์ ์ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
View์ Height ์กฐ์ :ย Image ํ์ ์ ๊ด๊ณ ๋ ๊ธฐ์กด์ mediaView ๋ณด๋ค ์ํ ๊ธธ์ด๊ฐ ๊ธธ๊ธฐ ๋๋ฌธ์, customization ํ์๋ ๋ชจ๋ view์ height๋ฅผย
wrap_content
๋ก ์ ์ฉํ๊ณ ๊ธฐํ height๋ฅผ ๊ณ ์ ํ๋ ๋ก์ง์ ์ ๊ฑฐํด์ผ ํฉ๋๋ค.View์ ๋ ์ด์์ ์กฐ์ : NativeAd ๋ฅผ ์ด์ฉํด์ ๊ด๊ณ ๋ทฐ๋ฅผ ๊ทธ๋ฆฌ๋ ๊ณผ์ ์์ ํ์ฌ ํ์ ์ด Image ์ธ์ง ํ์ธํ์ฌ title, description ์ ์ํ layout ์ ์์ฑ๋๋ค.
FeedConfig ์ค์ :ย FeedConfig ๋น๋ ์์ ์ imageTypeEnabled ๋ฅผ true ๋ก ์ค์ ํด์ Image ํ์ ๊ด๊ณ ๋ฅผ ๋ฐ์ ์ ์๊ฒ ํฉ๋๋ค.
ย
FeedFragment๋ฅผ ์ฌ์ฉํ ๋ฐฉ์
๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณต๋๋ FeedActivity๊ฐ ์๋ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก Feed๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ์ถ์๋, FeedFragment๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
FeedFragment ๊ธฐ๋ณธ ์ฌ์ฉ ๋ฐฉ๋ฒ
FeedFragment์์๋ FeedActivity์ ๋ง์ฐฌ๊ฐ์ง๋ก FeedHandler๋ฅผ ์์ฑํ ํ preload()๋ฅผ ํธ์ถํ๊ณ startFeedActivity()๋ฅผ ํธ์ถํ์ง ์์ผ๋ฉด Preload์ ๊ด๋ จํ ๊ธฐ๋ฅ์ ๋ชจ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
FeedFragment์์๋ FeedActivity์์ ์ ๊ณตํ๋ Customization ์ต์ ์ค Toolbar๋ฅผ ์ ์ธํ AdsAdapter์ Header, Image ํ์ ๊ด๊ณ ์ ๊ฒฝ์ฐ feedConfig์ ์ถ๊ฐํ๋ ๋ฐฉ์์ ํตํด Customize๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
ย