こんにちは、スマートニュース株式会社の紀平です。 SmartNews のアプリ内では、最近 WebView を使った機能を多数公開しております。そのうちの一つにショッピングチャンネルという機能があるのですが、今日はそのショッピングチャンネルのタイムセール枠で以前発生した、謎のプチフリーズ問題の調査手法をご紹介します。 tl;dr 特定の Android 端末でプチフリーズが発生した 再描画領域を減らすことで現象は改善した Chrome の Tracing 機能を利用し、ブラウザのソースコードまで参照して、ついに根本原因まで突き止めた タイムセールで起こった問題 タイムセールは、SmartNews のショッピングチャンネル内において WebView で提供されている、期間限定のお得な商品をアグリゲーションした機能です。EC サイト各社のご協力の上にご提供しております。内部は HTML5 で開
Qiitaに書こうかと思ったんですが、完全に理解できていない情報が多いため、ログとして残します。 Cookie周りが非常に厄介 UIWebViewとUIWebViewはCookieやSessionが同期されます。 iOS11以降において、WKWebViewとWKWebViewも同期されます(?) iOS10以下において、WKWebViewとWKWebViewは同期されません。 iOS11以降においても、UIWebViewとWKWebViewは同期されません。 同期するためにおそらくこちらの方法を使うと思いますが未検証です。 WKWebViewでのSessionの共有 - Qiita 同期されるのかされないのか問題は未だ非常に曖昧です。 同期される条件やタイミングなど。 参考 WKProcessPoolが違ってもWKWebView同士のcookieを同期されていた - しめ鯖日記 バージョン
こんにちは、メルカリでフロントエンドエンジニアをしている @karszawa です。 本日はメルカリアドベントカレンダー2019の21日目の記事として「メルカリアプリのWebView向けWebアプリケーションの開発を支えるモック技術」というニッチ(?)な題目の話をさせていただきます。 メルカリアプリでは「取引画面」を代表として、意外と多くの場所で WebView が使われています。 WebView 向けの Web アプリケーション開発は動作環境が特殊で外部依存の多いという点で普通の Web アプリケーション開発よりややこしいです。たとえば、普通の Web アプリケーションはあるアプリが独自に定義した API(ネイティブ API)を呼ぶことはありません。この記事ではそういった難しさを持ったアプリケーションを開発する上で重要な モックの話 をします。 本番環境と開発環境のアプリケーションが参照
I tried this, which should work but doesn't: webView.scrollView.setContentOffset(CGPoint(x: 0, y: 0), animated: false) I am working on a browser and have a couple of webViews in kept in stack. Some sites work as expected, start at the top, some do not. Starts at top: http://leagueoflegends.com/ This one starts a little down, have to manually scroll up: http://euw.leagueoflegends.com/ Extra note, t
WKWebViewを用いた時に調査した技術メモ。2015年3月上旬時点のもの。 かなり雑です。。 WKWebViewの特徴 プログレスの取得 estimatedProgressプロパティにより取得可 タイトル・URLの取得 title,URLプロパティが追加された safariのような閲覧履歴の取得 閲覧履歴が管理される エッジスワイプで戻る、進む allowsBackForwardNavigationGesturesプロパティをtrueにすることで設定可 プロパティのKVO対応 title,URL,loading,estimatedProgress,hasOnlySecureContent,canGoBack,canGoFowardプロパティがKVO対応 Javascriptとの連携 以下に詳細を記述 JavaScriptとの連携 evaluateJavaScript(_ javaScr
// MARK: - 読み込み設定(リクエスト前) func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { print("リクエスト前") /* * WebView内の特定のリンクをタップした時の処理などが書ける(2019/11/16追記) */ let url = navigationAction.request.url print("読み込もうとしているページのURLが取得できる: ", url ?? "") // リンクをタップしてページを読み込む前に呼ばれるので、例えば、urlをチェックして // ①AppStoreのリンクだったらス
はじめに WKWebViewを初めて使って調べたときに、 バラバラとした情報が多い印象で、 少々苦労した記憶があるので、備忘録として記載します。 とはいえ初心者向けです・・・!(`・ω・´) WKWebViewとは? iOS 8では、これまで用いられていたブラウザエンジンであるUIWebViewに加え、「WKWebView」という新しいエンジンが追加されました。 WKWebViewはその実行速度、安定性、そして機能面でも、UIWebViewを大幅に向上しています。 要するに、WKWebViewを用いるだけで、アプリの実行速度が大幅にアップする。 引用元:ハイブリッドアプリの動作性能を飛躍的にアップさせるiOS 8の新ブラウザエンジンを検証する 要するに、アプリでWebページを表示している、あれです。(`・ω・´) iOS8.0以上では、WKWebViewを使用するのが主流のようです。 (U
iOSで簡単なWebViewアプリの作るときに必要そうなことまとめておく。以下のiOS版 android WebViewアプリの作り方まとめとく - とりあえずphpとか WKWebViewを作ってサイトを表示する ViewController import UIKit import WebKit class ViewController: UIViewController { var webView: WKWebView! override func viewDidLoad() { super.viewDidLoad() webView = WKWebView(frame: CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.height)) view.addSubview(webView) let request
はじめに AndroidアプリにはWebサイトを表示することができるWebViewというものがあります。 そこで、AndroidとWebView間でデータをやり取りするのにどうしたらいいのかを書いていこうと思います。 やりたいこと WebView から Android にデータを渡す Android から WebView にデータを渡す WebView から Android にデータを渡す webView.webChromeClient の onJsAlert を使っていきます。 これはWebView内のJavaScriptの alert を検知して発火するイベントです。 alert に表示する文字列を onJsAlert の引数 message として受けることができます。 // 省略 webView.webChromeClient = object : WebChromeClient(
ついにというかようやくというかUIWebViewがiOS12でdeprecatedとなりました! それに伴い、これまでしぶとくUIWebViewを使っていたアプリもWKWebViewへと移行せざるを得なくなってきたかもしれません。 それで、UIWebViewからの移行で困るポイントの一つである「新しいウィンドウが開けない問題」をまとめ直してみました。 WKWebViewで新しいウィンドウ(タブ)を開くには UIWebViewでは、新しいウィンドウ(タブ)を開くリンクをタップすると、同じWebViewの中でそのまま遷移していました。 ところが、WKWebViewではそういったリンクをタップしても無視される為、新しいウィンドウ(タブ)を開くリンクがタップされた時にどういった処理をするのかをアプリ側で実装する必要があります。 (ちなみに、UIWebViewだけでなくSFSafariViewCon
let url = Bundle.main.url(forResource: "index", withExtension: ".html")! let urlRequest = URLRequest(url: url) webView.load(urlRequest) } import UIKit //import JavaScriptCore import WebKit class ViewController: UIViewController, WKNavigationDelegate { let webView: WKWebView = WKWebView() override func viewDidLoad() { super.viewDidLoad() webView.frame = view.bounds webView.navigationDelegate = self
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { CookieManager.getInstance().removeAllCookies(null); CookieManager.getInstance().flush(); } else { CookieSyncManager cookieSyncMngr=CookieSyncManager.createInstance(getApplicationContext()); cookieSyncMngr.startSync(); CookieManager cookieManager=CookieManager.getInstance(); c
2019/12/27 · 以下の関連リソースもご覧ください。 WebView の Pixel-Perfect UI · モバイル優先のレスポンシブ ウェブ デザインの構築 · 可変ピクセル密度の高 DPI ...
AndroidのWebViewを少し触る機会があったので備忘録。 Layout上のWebViewを取得 package com.example.sush.webviewtest; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.webkit.WebView; import android.webkit.WebViewClient; public class MainActivity extends AppCompatActivity { // WebViewの変数を宣言 private WebView webView; @Override protected void onCreate(Bundle savedInstanceState) { super.on
Android WebViewでデバック Android の WebView にアセットに登録したHTML・CSS・JavaScriptをChrome Developer Toolsを使ってデバックすることができます。 Web開発で使ったことのあるツールなので、それをAndroidアプリで使えるのは便利です。 デバックするときの条件 コンピュータに Chrome 32 以上がインストールされていること USB ケーブルで Android 端末と接続できること Android 端末で USB デバッグが有効になってること Chrome for Android で使う場合は Android 4.0 以上 Webview アプリで使う場合は Android 4.4 以上 後半の2点だけ注意すれば、問題なさそうです。 実装 Chrome Developer Toolsを利用するために、以下のコード
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く