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();

Monday, 31 August 2020

Cosmose, a platform that analyzes foot traffic in physical stores, gets $15 million Series A

Cosmose, a platform that tracks foot traffic in brick-and-mortar stores to help companies predict customer behavior, announced today it has raised a $15 million Series A. The round was by Tiga Investments, with participation from returning investors OTB Ventures and TDJ Pitango, who co-led Cosmose’s seed round last year. The company said its valuation is now more than $100 million.

The Series A will be used for product development and geographic expansion, starting with Southeast Asian markets this year, followed by the Middle East and India. Chief executive officer Miron Mironiuk, who founded Cosmose in 2014, said its goal is to break even and generate profit by 2021.

Cosmose has offices in Shanghai, Hong Kong, New York and Warsaw, where is software engineering team is based. Most of the stores its tech is currently use in are in China and Japan, and its clients include companies like Walmart, Marriott, Samsung, and LVMH.

As companies try to recover from the impact of COVID-19, Mironiuk said Cosmose’s platform has helped clients make decisions about when to reopen stores and what kind of inventory to stock, and how to increase revenue. For example, ‘some shops wanted to connect with customers who used to shop in their physical locations and encourage them to buy online,” he said. “Hotels in Japan were focused on promoting their in-house restaurants to local residents to make up for the lost revenue.” The company is also working with Boston Consulting Group on a report called “COVID-19 offline retail recovery traffic in China” for publication next week.

Mironiuk said that a PwC audit of the platform’s accuracy completed in December 2019 confirmed its ability to track customers within 1.6 meters of their location in a store, and that its data ecosystem now comprises of more than one billion smartphones and 360,000 stores. Cosmose’s plan is to grow that to two billion smartphones and 10 million stores by 2022.

The company offers three main products: Cosmose Analytics, which tracks customers’ movements inside brick-and-mortar stores; Cosmose AI, a data analytics and prediction platform to help retailers create marketing campaigns and increase sales; and Cosmose Media, for targeting online ads.

Cosmose does not require hardware installation, which means no regular maintenance is required after Cosmose maps a store, and helps it differentiate from rivals.

There are other companies that also analyze foot traffic in brick-and-mortar stores, including RetailNext and ShopperTrak, but being tracked might alarm customers who are concerned about their privacy. Mironiuk said all of the smartphone data Cosmose AI gathers is anonymized, so the company doesn’t know who shoppers are. The platform uses alphanumeric IDs called OMNIcookies, does not collect personal data like phone MAC addresses, mobile numbers, or email addresses, and follows data privacy laws in each of the countries it operates in. It also allows shoppers to opt-out of tracking.

In a press statement about the investment, Raymond Zage, the CEO and founder of Tiga Investments, said “I was attracted by the strong results Cosmose is already achieving for some of the world’s recognizable brands, while simultaneously ensuring user privacy is protected. Cosmose team is saving stores while enhancing consumer experience.”



from TechCrunch https://ift.tt/3bmjZmY
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support