1747407062
2025-05-16 07:02:00
Autor:dositphotos
私たちのように 彼らは昨日書いたNextCloudは火曜日に、GoogleがAndroid許可の一部をキャンセルし、アプリが正しく機能しないと不満を述べました。 Googleは昨日午後3時ごろに苦情に応答しました。 NextCloudの権利を返します。
最初のテストアプリケーションは夜にリリースされ、問題がなければ、来週初めにプレイストアで鋭いアプリケーションが期待できます。
(ソース: Arstechnica、 Slashdot))
最初のLinuxは1994年頃に彼を設置しました。後に彼は物理学を学び、博士号を取得しました。
`; if(youtubeiframe!== null && iinfovasturls.length> 0){const re =/embded/.*) ?/; const youtubeid = youtubeiframe.src.match(re)[1]; const youtubeimg = ‘https://img.youtube.com/vi/’ + youtubeid + ‘/hqdefault.jpg’; thumbwrap = `
`; youtubeiframe.after(document.createrange()。createcontextualfragment(thumbwrap)); youtubeiframe.style.display = ‘none’; const youtubethumb = document.getElementById( ‘ytprerollthumb’)let prerolladinitialized = false; youtubethumb.addeventlistener( ‘click’、()=> {youtubethumb.remove(); playprerollad();}); } adsmanagerをlet; adsloaderとします。 AddisPlayContainerとしましょう。 iinfoprerollopsitionとします。 iinfovasturlindex = 0とします。 advolume = 0とします。 prerollwidth = 480とします。 prerollheight = 320とします。 Prerolldocumentとしましょう。 VideoContentをしましょう。 prerolllasterror = 303とします。 prerollcontainerをしましょう。 prerollpaused = false; function playprerollad(){youtubeiframe.after(document.createrange()。createcontextualfragment(videoel)); iinfoprerollolopsition = document.getElementById( ‘iinfoprerolloplosition’); document.getElementById( ‘preroll-iframe’)。srcdoc = “”; document.getElementById( ‘preroll-iframe’)。onload = function(){setupiframe(); } prerollcontainer = document.getElementsByClassName( ‘Preroll-Container-Iframe’)[0]; } function setupiframe(){prerolldocument = document.getElementById( ‘preroll-iframe’)。contentWindow.document; let el = prerolldocument.createelement( ‘style’); prerolldocument.head.appendchild(el); El.innertext = “#adcontainer> div:nth-of-type(1)、#adcontainer> div:nth-of-type(1)> iframe {width:99%!comefict; height:99%!falite; max-width:100%;}#videocontent、body:100vh: ‘buntt neue ‘、arial、sans-serif} #videocontent {overflow:hidden; background:#000} #admutebtn {width:35px; height:35px; border:0; background:0; display:none; position:absolute; fill:rgba(230,230,230,230,1); videocontent = prerolldocument.getElementById( ‘contentelement’); videocontent.style.display = ‘none’; videocontent.volume = 1; videocontent.muted = false; const playpromise = videocontent.play(); if(playpromise!== undefined){playpromise.then(function(){console.log( ‘preroll sound aot’); // setupima(true); videocontent.volume = 1; videocontent.muted = false; setupima();})。 = 0; }} function setUpDimensions(){prerollwidth = math.min(iinfoprerollolopsition.offsetwidth、480); prerollheight = math.min(iinfoprerollposition.offsetheight、320); } function setupima(){google.ima.settings.setDisableCustomlecustombackforios10plus(true); google.ima.settings.setlocale( ‘cs’); google.ima.settings.setnumredirects(10); //広告ディスプレイコンテナを作成します。 createaddisplaycontainer(); //広告ローダーを作成します。 adsloader = new Google.ima.adsloader(addisplayContainer); //ロードされた広告とエラーイベントを聞いて応答します。 adsloader.addeventlistener(google.ima.adsmanagerloadedevent.type.ads_manager_loaded、onadsmanagerloaded、false); adsloader.addeventlistener(google.ima.aderrorevent.type.ad_error、onaderror、false); //イベントリスナーは、SDKが記入されていることをSDKに伝えて、SDKがポストロール広告を再生できるようにします。 const contentendedListener = function(){adsloader.contentcomplete(); }; videocontent.oned = contentendedListener; //ビデオ広告をリクエストします。 const adsrequest = new Google.ima.AdsRequest(); adsrequest.adtagurl = iinfovasturls[iinfoVastUrlIndex]; console.log( ‘preroll Advert:’ + iinfovasturls[iinfoVastUrlIndex]); videocontent.muted = false; videocontent.volume = 1; //線形および非線形スロットサイズを指定します。これにより、SDKが//複数の倍数が返された場合に正しいクリエイティブを選択するのに役立ちます。 // adsrequest.linearadslotwidth = prerollwidth; // adsrequest.linearadslotheight = prerollheight; adsrequest.nonlinearadslotwidth = 0; adsrequest.nonlinearadslotheight = 0; adsloader.requestads(adsrequest); } function createaddisplaycontainer(){// adcontainerは、//広告をhoreする要素のdom idであると仮定します。 prerolldocument.getElementByID( ‘VideoContent’)。style.display = ‘none’; AddisPlayContainer = new Google.ima.AddisPlayContainer(prerolldocument.getElementById( ‘adcontainer’)、videocontent); } function unmuteprerolloldvert(){advolume =!advolume; if(advolume){adsmanager.setvolume(0.3); prerolldocument.getElementById( ‘admutebtn’)。innerhtml = ”; } else {adsmanager.setVolume(0); prerolldocument.getElementById( ‘admutebtn’)。innerhtml = ”; }} function onadsmanagerloaded(adsmanagerloadedevent){// ads managerを取得します。 const adsrenderingsettings = new google.ima.adsrenderingsettings(); adsrenderingsettings.restorecustomerbackstateonadbreakcomplete = true; adsrenderingsettings.loadvideotimeout = 12000; // VideoContentは、コンテンツビデオ要素に設定する必要があります。 adsmanager = adsmanagerloadedevent.getadsmanager(videocontent、adsrenderingsettings); //必要なイベントにリスナーを追加します。 adsmanager.addeventlistener(google.ima.aderrorevent.type.ad_error、onaderror); adsmanager.addeventlistener(google.ima.adevent.type.content_pause_requested、oncontentpauserequested); adsmanager.addeventlistener(google.ima.adevent.type.content_resume_requested、oncontentresumerequested); adsmanager.addeventlistener(google.ima.adevent.type.all_ads_completed、onadevent); //必要に応じて、追加のイベントを聞いてください。 adsmanager.addeventlistener(google.ima.adevent.type.loaded、onadevent); adsmanager.addeventlistener(google.ima.adevent.type.started、onadevent); adsmanager.addeventlistener(google.ima.adevent.type.complete、onadevent); playads(); }関数playads(){//コンテナの初期化。モバイル//デバイスでのユーザーアクションを通じて行う必要があります。 videocontent.load(); addisplaycontainer.initialize(); // setUpDimensions(); try {//広告マネージャーを初期化します。 ADルールプレイリストはこの時点で開始されます。 adsmanager.init(1920、1080、google.ima.viewmode.normal); // Playを呼び出して広告の表示を開始します。単一のビデオとオーバーレイ広告は//この時点で開始します。 ADルールについては、呼び出しは無視されます。 adsmanager.start(); // window.addeventlistener( ‘resize’、function(event){// if(adsmanager){// setupdimensions(); // adsmanager.resize(prerollwidth、prerollheight、google.ima.viewmode.normal); ///} //}); } catch(aderror){//広大な応答に問題がある場合、エラーがスローされる場合があります。 // videocontent.play(); }} function onadevent(adevent){const ad = adevent.getad(); console.log( ‘preroll event:’ + adevent.type); switch(adevent.type){case google.ima.adevent.type.loaded:if(!ad.islinear()){videocontent.play(); } prerolldocument.getElementById( ‘adcontainer’)。style.width = “100%”; prerolldocument.getElementById( ‘adcontainer’)。style.maxwidth= “640px”; prerolldocument.getElementById( ‘adcontainer’)。style.height= “360px”;壊す; case google.ima.adevent.type.started:window.addeventlistener( ‘scroll’、onactiveview); if(ad.islinear()){intervaltimer = setInterval(function(){// example:const resight time = adsmanager.getRemainingTime(); // adsmanager.pause();}、300); // 300msすべて} prerolldocument.getElementById( ‘admutebtn’)。style.display= ‘block’;壊す; case google.ima.adevent.type.all_ads_completed:if(ad.islinear()){clearinterval(intervaltimer); } if(prerolllasterror === 303){playytvideo(); } 壊す; case google.ima.adevent.type.complete:if(ad.islinear()){clearInterval(intervaltimer); } playytvideo();壊す; }} function onaderror(aderrorevent){console.log(aderrorevent.geterror()); prerolllasterror = aderrorevent.getError()。getErrorCode(); if(!loadnext()){playytvideo(); }} function loadnext(){iinfovasturlindex ++; if(iinfovasturlindex 0.0){if(prerollpaused){adsmanager.resume(); prerollpaused = false; } trueを返します。 } else {if(!prerollpaused){adsmanager.pause(); prerollpaused = true; }}} falseを返します。 } function playytvideo(){iinfoprerollposition.remove(); youtubeiframe.style.display = ‘block’; youtubeiframe.src += ‘&autoplay = 1&mute = 1’; }}
#GoogleはAndroidのNextCloudの権利を返します