2013-04-15 1 views
0

크롬 앱을 제작 중이며 기본적으로 완료되었지만 고객의 웹 사이트에 코드를 추가하여 Chrome에 앱이 설치되어 있는지 여부를 결정합니다.Chrome Manifest.json 구문 오류

이렇게하려면 파일이 "manifest.json"인지 확인해야 응용 프로그램이 설치되어 있는지 여부를 확인할 수 있습니다. 크롬 확장

거부 ​​부하 : 나는 다음과 같은 출력을 얻고 크롬 콘솔을 확인하여

function detectChromeExtension(extensionId, accesibleResource, callback){ 
      if (typeof(chrome) !== 'undefined'){ 
       var xmlHttp = new XMLHttpRequest(), 
        testUrl = 'chrome-extension://' +extensionId +'/' +accesibleResource; 
        xmlHttp.open('HEAD', testUrl, true); 
       xmlHttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); 
       xmlHttp.timeout = 1000; 

       xmlHttp.onreadystatechange = function() { 
       if (xmlHttp.readyState == 4 && typeof(callback) == 'function') { 
        if (xmlHttp.status == 200) { 
         callback.call(this, true); 
        } else { 
         callback.call(this, false); 
        } 
       } 
      }   
      xmlHttp.ontimeout = function() { 
       if (typeof(callback) == 'function') 
        callback.call(this, false); 
       }   
       xmlHttp.send(); 
      } else { 
       if (typeof(callback) == 'function') 
        callback.call(this, false); 
      }  
     }; 

     detectChromeExtension('gcjbmhbihobfgpjmfbooldocijijdpig', 'manifest.json', myCallbackFunction); 

     function myCallbackFunction(extensionExists) { 
      if (extensionExists){ 
       console.log('Extension present'); 
      } else { 
       console.log('Extension not present'); 
      } 
     } 

: 나는 여기에 다른 게시 된 질문에서 가져온 아래의 코드를 사용하고

: //gcjbmhbihobfgpjmfbooldocijijdpig/manifest.json. 확장 외부의 페이지에서로드하려면 리소스가 web_accessible_resources 매니페스트 키에 나열되어야합니다.

그래서 "web_accessible_resources"를 추가하려고합니다 : [ "manifest.json"]을 내 manifest.json에 추가하지만이 줄은 구문을 따르지 않습니다. 이것에 어떤 도움을 주시면 더 좋구요

{ 
"name": "Watch TBR", 
"version": "1.0", 
"manifest_version": 2, 
"default_locale": "en", 
"description": "Easy access to WatchTBR.com", 
"icons": { "128": "icon_128.png", "16": "icon_16.png" }, 
"app": { 
"urls": [ 
    "http://www.watchtbr.com/" 
], 
"launch": { 
    "web_url": "http://www.watchtbr.com/" 
} 
}, 
"web_accessible_resources": ["manifest.json"], 
"permissions":["http://www.watchtbr.com"] 
} 

:

다음은 전체의 manifest.json입니다.

답변

2

확장 프로그램과 달리 웹 사이트에서 패키지 된 앱의 리소스에 액세스 할 수있는 방법이 없습니다. 사이트와 앱을 모두 소유 한 경우 Chrome 웹 스토어의 inline installation 기능을 사용하여 앱이 chrome.app.isInstalled과 함께 설치되어 있는지 테스트 할 수 있습니다.

현재 isInstalled 방법은 호스트 된 앱으로 제한되지만, this bug은 패키지 된 앱을 추적합니다.

앱을 소유하지 않거나 앱 (설치된 경우) 또는 상점 항목 (설치되지 않은 경우)에 대한 링크를 공유하려는 경우 별표를 표시하고 진행 상황을 추적 할 수 있습니다 (https://code.google.com/p/chromium/issues/detail?id=161054).

+0

그런 다음 Crackle.com이 앱을 설치하지 않았 음을 어떻게 감지하고 설치하도록 요청합니까? –

+1

http://stackoverflow.com/a/9314807/344467 사이트의 JS 소스 코드를 보면이 사실을 알 수 있습니다. – sowbug

+0

그게 Crackle의 소스가 횡설수설하는 문제입니다. 나는 팝업 창을 띄우는 데 사용하는 JS 코드를 찾을 수 없습니다. 아쉽게도 게시 한 링크를 시도하십시오 –