Webview
Webview, web sitelerinin içeriklerini native olarak uygulamamız içerisinde göstermemizi sağlamaktadır. Webview ile browserda yaptığımız birçok işlemi yapabilmekteyiz. Örneklerle göstermeye çalışacağız.
Basit Webview Kullanımı
Basit bir örnek yapalım. Örneğimizde Webview bileşenine kaynak adres olarak www.mobilkodakademi.com verelim. Ekranda da her yerden 10 boşluk bırakalım.

IOS Webview HTTP Hatası
Burada önemli bir noktaya geliyoruz. IOS cihazlarda Webview bileşeni kullandığımızda gösterilecek olan site HTTP ise IOS cihazlarda başarılı bir sonuç alamayacağız. Yukarıdaki kodu IOS emulatorde çalıştırdığımızda aşağıdaki hatayı alacağız.

Hatanın sebebi ios cihazlarda HTTP sayfaları güvenilir bulunmamaktadır. Bu nedenle HTTP sayfalarının gösterilmesi engellenmektedir. Engellemeyi kaldırmak için göstermek istediğimiz HTTP sayfalarını Xcode üzerinden Info.plist dosyasında belirtmemiz gerekmektedir. Info.plist dosyasını açıyoruz. App Transport Security Settings -> Exception Domains içerisine localhost için localhost, herhangi bir HTTP sayfası için onun adını giriyoruz. Daha sonra girdiğimiz sitenin altına ilk olarak NSTemporaryExceptionAllowsInsecureHTTPLoads parametresini ekliyoruz. Eklediğimiz parametrenin yan tarafına(value) true giriyoruz. Ikinci olarak da NSExceptionAllowsInsecureHTTPLoads parametresini ekleyip yan tarafa YES giriyoruz. Uygulamayı Xcode üzerinden build ediyoruz ve artık HTTP sayfamızı da gösterebiliriz. Aşağıdaki örnekte sadece localhost eklenmiştir.


Webview Sık Kullanılan Parametreler
Webview bileşeninin birçok parametresi bulunmaktadır. Bunlardan en sık kullanılanlardan birkaçını açıklayacağız.
onNavigationStateChange (fonksiyon)
Webview yüklemesi başladığında ya da bittiğinde tetiklenmektedir.
scalesPageToFit (bool)
Web içeriğinin sayfada orantılı olarak gösterilmesini sağlar. Default olarak true gelmektedir.
javaScriptEnabled (bool)
JavaScript enable/disable yapılması için kullanılır. IOS için bu değer default olarak true gelmektedir. Android için ise bunun belirtilmesi gerekmektedir.
userAgent (string)
Webview bileşenine user agent bilgileri verilebilmesi için kullanılmaktadır. Android için kullanılabilir.
dataDetectorTypes
Web site içeriğinde url, telefon numarası, takvim, adres gibi parametrelerin varlığını belirtmek için kullanılır. Default olarak telefon numarasını tespite yönelik çalışır. Diğer parametreler için;
- phoneNumber
- link
- address
- calendarEvent
- none
- all
Yalnıza IOS cihazlar için kullanılabilir.
scrollEnabled (bool)
Webview bileşeninde aşağı yukarı (scroll) yapılıp yapılmayacağını belirtmek için kullanılır. Default olarak true gelir.
Webview Içerisinde Geri Tuşu Kullanmak (Önceki Sayfaya Dönmek)
Webview içerisinde gösterilen sayfadan başka sayfalara gidebiliriz. Peki bir önceki sayfaya nasıl döneceğiz? Bunun için iki parametre önem arz etmektedir. Bunlardan bir tanesi onNavigationStateChange, diğeri ise ref.
Şimdi yukarıdaki parametreleri de içeren biraz daha kompleks ve geri gitme tuşu da olan bir Webview örneği yapalım.


State içerisindeki parametreleri kısaca açıklayacak olursak;
url: Webview bileşeninin göstereceği web sitesi
status: Web sitesi açıldığında başlık bilgisi.
backButtonEnabled: Geri gitme tuşunun aktif ya da deaktif olması.
forwardButtonEnabled: Ileri gitme tuşunun aktif ya da deaktif olması.
loading: Web sitesinin yüklenip yüklenmediğini ifade eder.



Teşekkürler.
Merhabalar;
Apk google play gönderirken ben de Ssl Error Handler hatası aldım. Bunu çözmenin bir yolu var mı acaba. ? Android tarafında. ?
Merhaba,
Ssl Error handle etmeniz gerektiğinin uyarasını vermiş size. Bunun için onReceivedSslError fonksiyonunu handle edip kontrol altına alabilirsiniz.
Örnek olarak aşağıdaki kodu kullanabilirsiniz. Kaynak: Stackoverflow
@Override
public void onReceivedSslError(WebView view, final SslErrorHandler handler, SslError error) {
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(R.string.notification_error_ssl_cert_invalid);
builder.setPositiveButton("continue", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
handler.proceed();
}
});
builder.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
handler.cancel();
}
});
final AlertDialog dialog = builder.create();
dialog.show();
}
merhaba php bir projem var hybrid native yapılması lazım beni arayabilirmisiniz.
Merhaba,
mobilkodakademi@gmail.com hesabına mail atabilirsiniz.
Teşekkürler.