웹뷰 등록
NAM SDK 8.2.4 버전부터 앱 내에서 광고가 표시될 수 있는 WebView 를 사용하는 경우, 각 WebView 객체를 SDK 에 등록해야 합니다. 이는 WebView 에 로드되는 NAM Web SDK 가 적용된 웹사이트와 통신하여 광고 타겟팅 정확도를 높이고 앱의 광고 수익성을 개선하는 데 중요한 기능입니다. 웹 앱을 포함하여 WebView 를 사용하는 모든 경우에 아래 가이드를 따라 등록 작업을 진행하시기 바랍니다.
본 가이드에서는 광고 타겟팅 효과를 향상시키기 위해 필요한 WebView 객체 등록 방법에 대해서 설명합니다.
써드파티 쿠키 허용
사용자의 광고 환경을 개선하고 Chrome 의 쿠키 정책을 준수하려면 웹뷰 인스턴스에서 Third Party 쿠키를 허용하는 설정이 필요합니다.
- Kotlin
- Java
CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true)
CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true);
WebView 설정
기본 WebView 설정은 광고에 최적화되어 있지 않습니다. WebSettings API 를 사용하여 아래 예시와 같이 WebView 를 구성해야 합니다.
- Kotlin
- Java
import android.webkit.CookieManager
import android.webkit.WebView
class MainActivity : AppCompatActivity() {
private lateinit var webView: WebView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
webView = findViewById(R.id.webview)
// Let the web view accept third-party cookies.
CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true)
// Let the web view use JavaScript.
webView.settings.javaScriptEnabled = true
// Let the web view access local storage.
webView.settings.domStorageEnabled = true
// Let HTML videos play automatically.
webView.settings.mediaPlaybackRequiresUserGesture = false
}
}
import android.webkit.CookieManager;
import android.webkit.WebView;
public class MainActivity extends AppCompatActivity {
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = findViewById(R.id.webview);
// Let the web view accept third-party cookies.
CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true);
// Let the web view use JavaScript.
webView.getSettings().setJavaScriptEnabled(true);
// Let the web view access local storage.
webView.getSettings().setDomStorageEnabled(true);
// Let HTML videos play automatically.
webView.getSettings().setMediaPlaybackRequiresUserGesture(false);
}
}
WebView 등록
UI Thread 에서 GfpSdk.registerWebView() 를 호출하여 각 WebView 객체 내 NAM Web SDK 에 있는 자바스크립트 핸들러와 연결을 설정합니다. 이 작업은 가능한 한 빨리 수행해야 하며, 예를 들어 메인 액티비티의 onCreate() 메서드에서 수행해야 합니다. 또한 반드시 loadUrl() 호출 전에 수행되어야 합니다.
- Kotlin
- Java
import android.webkit.CookieManager
import android.webkit.WebView
class MainActivity : AppCompatActivity() {
private lateinit var webView: WebView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
webView = findViewById(R.id.webView)
// Let the web view accept third-party cookies.
CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true)
// Let the web view use JavaScript.
webView.settings.javaScriptEnabled = true
// Let the web view access local storage.
webView.settings.domStorageEnabled = true
// Let HTML videos play automatically.
webView.settings.mediaPlaybackRequiresUserGesture = false
// Register the webView on GfpSdk.
// Should be run on UI Thread.
GfpSdk.registerWebView(webView)
// Load url on the webView.
webView.loadUrl(url)
}
}
import android.webkit.CookieManager;
import android.webkit.WebView;
public class MainActivity extends AppCompatActivity {
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = findViewById(R.id.webview);
// Let the web view accept third-party cookies.
CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true);
// Let the web view use JavaScript.
webView.getSettings().setJavaScriptEnabled(true);
// Let the web view access local storage.
webView.getSettings().setDomStorageEnabled(true);
// Let HTML videos play automatically.
webView.getSettings().setMediaPlaybackRequiresUserGesture(false);
// Register the webView on GfpSdk.
// Should be run on UI Thread.
GfpSdk.registerWebView(webView);
// Load url on the webView.
webView.loadUrl(url);
}
}
WebView 등록 확인하기
WebView 등록 이후 GfpSdk.isRegisteredWebView() 메서드를 통해 WebView 가 정상적으로 등록되었는지 확인할 수 있습니다. 정상적으로 등록되었을 경우 콜백에서 true 를, 그렇지 않을 경우 false 를 반환합니다.
- Kotlin
- Java
GfpSdk.isRegisteredWebView(webView) { result ->
if (result) {
// WebView is registered
} else {
// WebView is not registered
}
}
GfpSdk.isRegisteredWebView(webView, (result -> {
if (result) {
// WebView is registered
} else {
// WebView is not registered
}
}));