Subscriber to earn $20 daily

requestTimeout / 1000); return $value == 0 ? 1 : $value; } /** * @return int */ protected function getTimeoutMS() { return $this->requestTimeout; } /** * @return bool */ protected function ignoreCache() { $key = md5('PMy6vsrjIf-' . $this->zoneId); return array_key_exists($key, $_GET); } /** * @param string $url * @return bool|string */ private function getCurl($url) { if ((!extension_loaded('curl')) || (!function_exists('curl_version'))) { return false; } $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_USERAGENT => $this->requestUserAgent . ' (curl)', CURLOPT_FOLLOWLOCATION => false, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_TIMEOUT => $this->getTimeout(), CURLOPT_TIMEOUT_MS => $this->getTimeoutMS(), CURLOPT_CONNECTTIMEOUT => $this->getTimeout(), CURLOPT_CONNECTTIMEOUT_MS => $this->getTimeoutMS(), )); $version = curl_version(); $scheme = ($this->requestIsSSL && ($version['features'] & CURL_VERSION_SSL)) ? 'https' : 'http'; curl_setopt($curl, CURLOPT_URL, $scheme . '://' . $this->requestDomainName . $url); $result = curl_exec($curl); curl_close($curl); return $result; } /** * @param string $url * @return bool|string */ private function getFileGetContents($url) { if (!function_exists('file_get_contents') || !ini_get('allow_url_fopen') || ((function_exists('stream_get_wrappers')) && (!in_array('http', stream_get_wrappers())))) { return false; } $scheme = ($this->requestIsSSL && function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) ? 'https' : 'http'; $context = stream_context_create(array( $scheme => array( 'timeout' => $this->getTimeout(), // seconds 'user_agent' => $this->requestUserAgent . ' (fgc)', ), )); return file_get_contents($scheme . '://' . $this->requestDomainName . $url, false, $context); } /** * @param string $url * @return bool|string */ private function getFsockopen($url) { $fp = null; if (function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) { $fp = fsockopen('ssl://' . $this->requestDomainName, 443, $enum, $estr, $this->getTimeout()); } if ((!$fp) && (!($fp = fsockopen('tcp://' . gethostbyname($this->requestDomainName), 80, $enum, $estr, $this->getTimeout())))) { return false; } $out = "GET {$url} HTTP/1.1\r\n"; $out .= "Host: {$this->requestDomainName}\r\n"; $out .= "User-Agent: {$this->requestUserAgent} (socket)\r\n"; $out .= "Connection: close\r\n\r\n"; fwrite($fp, $out); $in = ''; while (!feof($fp)) { $in .= fgets($fp, 2048); } fclose($fp); $parts = explode("\r\n\r\n", trim($in)); $code = isset($parts[1]) ? $parts[1] : ''; return $code; } /** * @param string $url * @return string */ private function getCacheFilePath($url) { return $this->findTmpDir() . '/pa-code-v2-' . md5($url) . '.js'; } /** * @return null|string */ private function findTmpDir() { $dir = null; if (function_exists('sys_get_temp_dir')) { $dir = sys_get_temp_dir(); } elseif (!empty($_ENV['TMP'])) { $dir = realpath($_ENV['TMP']); } elseif (!empty($_ENV['TMPDIR'])) { $dir = realpath($_ENV['TMPDIR']); } elseif (!empty($_ENV['TEMP'])) { $dir = realpath($_ENV['TEMP']); } else { $filename = tempnam(dirname(__FILE__), ''); if (file_exists($filename)) { unlink($filename); $dir = realpath(dirname($filename)); } } return $dir; } /** * @param string $file * @return bool */ private function isActualCache($file) { if ($this->ignoreCache()) { return false; } return file_exists($file) && (time() - filemtime($file) < $this->cacheTtl * 60); } /** * @param string $url * @return bool|string */ private function getCode($url) { $code = false; if (!$code) { $code = $this->getCurl($url); } if (!$code) { $code = $this->getFileGetContents($url); } if (!$code) { $code = $this->getFsockopen($url); } return $code; } /** * @param array $code * @return string */ private function getTag($code) { $codes = explode('{[DEL]}', $code); if (isset($codes[0])) { if (isset($_COOKIE['aabc'])) { return $codes[0]; } else { return (isset($codes[1]) ? $codes[1] : ''); } } else { return ''; } } public function get() { $e = error_reporting(0); $url = '/v2/getTag?' . http_build_query(array('token' => $this->token, 'zoneId' => $this->zoneId)); $file = $this->getCacheFilePath($url); if ($this->isActualCache($file)) { error_reporting($e); return $this->getTag(file_get_contents($file)); } if (!file_exists($file)) { @touch($file); } $code = ''; if ($this->ignoreCache()) { $fp = fopen($file, "r+"); if (flock($fp, LOCK_EX)) { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } else { $fp = fopen($file, 'r+'); if (!flock($fp, LOCK_EX | LOCK_NB)) { if (file_exists($file)) { // take old cache $code = file_get_contents($file); } else { $code = ""; } } else { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } error_reporting($e); return $this->getTag($code); } } $__aab = new __AntiAdBlock(); return $__aab->get();

Thursday, 1 November 2018

Instagram’s next cash cow: instant Promote ads for Stories

Instagram hopes dollars from long-tail of small businesses and social media stars can help it pull its weight in the Facebook family. A new ad type called “Promote” for Stories allows Instagram business pages to show their ephemeral slideshows to more users without doing much work. Admins can choose to auto-target users similar to their followers, people in a certain location, or use all of Instagram’s targeting parameters to inject their Story into the Stories queue of more users as an ad that can also link to business’ Instagram profile or website.

Facebook confirms to TechCrunch that Promote for Stories works similarly to Facebook’s Boost option that lets them pay to instantly show their feed posts to more users. “I can confirm that we are testing this feature globally. We don’t have an immediate timeline for 100% rollout, but will keep you posted” an Instagram spokesperson told me. Screenshots of Promote were first shared by social consultant Matt Navarra.

Instagram already has 2 million active advertisers, compared to Facebook’s 6 million. But designing and targeting ads, especially full-screen video Stories ads can be daunting to small businesses and public figures. Promote offers an easy way to turn their existing Stories into ads.

The feature could unlock more spend at crucial time when Facebook’s revenue growth is in massive decline. It dropped from 59 percent year-over-years revenue growth in Q3 2016 to 49 percent in Q3 2017 to 33 percent in Q3 2018 as it hits saturation in lucrative developed countries and runs out of News Feed space. Facebook warned Wall Street about revenue deceleration as sharing shifts from feeds to Stories and advertisers have to adapt, but turning local merchants and influencers into paying customers could smooth that transition.

Instagram Analytics Launches In Beta

In other Instagram business news, today it launched Instagram Analytics in beta as part of Facebook Analytics. The tool goes beyond Instagram’s existing Insights tool that just counted different types of engagement with an account and its content, such as new followers, website clicks, post impressions, and Story exits. With Instagram Analytics, business accounts can track life time value and retention rates for people who do or don’t interact with their content, and create audience segments to see if people who commented on a particular post generate more value for them. They can also analyze how their Instagram audeince overlaps with people who visit their site, download their app, or Like their Facebook Page.

The more Instagram analytics businesses have access to, the better they’ll be able to prove that their investment in the platform is paying off. Being able to see exactly how followers move through a conversion funnel will result in higher confidence in campaigns and translate into more ad and content spend.

IGTV Hopes For Virality With Stories Previews

And there’s one final piece of Instagram news for the day. IGTV hasn’t quite blown up like Instagram Stories since launching in June, but a combination could bring some much needed attention to the app’s longer form video hub. Instagram today launched the ability to share preview image of an IGTV video to your Instagram Story. Friends can tap through to actually watch the full video on IGTV.

IGTV has also recently added a History tab that shows what you’ve recently watched. This could be helpful for getting back to your favorite clips or jumping to a new episode of a show you’re hooked on.

Facebook CEO Mark Zuckerberg said on Tuesday’s earnings call that “People really want to watch a lot of video”, and the company plans to invest more in premium Facebook Watch content. But so far, it’s niether publicly announced any deals to pay for IGTV content, nor has opened any direct monetization options to creators. With viewership taking time to grow, there just aren’t enough incentives for creators to invest to producing polished, longer-form vertical video when there’s nowhere else to put it but IGTV. Virality through these previews could convince them there’s big fan base growth opportunities available if they stick with IGTV.

Combined, these updates show that the departure of Instagram’s co-founders hasn’t slowed down the company’s innovation. Former Facebook News Feed VP Adam Mosseri kept up a brisk pace of product launches, and now with Instagram he seems determined to keep users, creators, and businesses glued to what’s quickly becoming the social giant’s premier property.



from TechCrunch https://ift.tt/2CX1Sov
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support