2013-12-22 2 views
2

프로덕션 환경에서 Google 크롬 확장 프로그램이 있습니다. 프로그램의 한 부분은 chrome.notifications API를 통해 알림을 표시합니다. 이 논리를 사용하여 알림을 표시하기 시작합니다.chrome.notifications가 간헐적으로 정의되지 않았습니다.

// Expects options: { iconUrl: string, title: string, message: string } 
showNotification: function (options) { 

    // TODO: Future version of Google Chrome will support permission levels on notifications. 
    if (chrome.notifications.getPermissionLevel) { 
     chrome.notifications.getPermissionLevel(function (permissionLevel) { 
      if (permissionLevel === 'granted') { 
       doShowNotification(options); 
      } 
     }); 
    } else { 
     doShowNotification(options); 
    } 

} 

이 논리는 정상적으로 작동합니다. getPermissionLevel 함수는 아직 구현되지 않았지만 앞으로 제공 될 예정입니다. 그래서 구현되었는지 확인하고 그렇지 않다면 단순히 알림을 보여줍니다.

일부 클라이언트에서 오류가 표시됩니다. ,

Uncaught TypeError: Cannot read property 'getPermissionLevel' of undefined

이 코드는 나를 위해 완벽하게 잘 작동하기 때문 홀수, 내 테스트 케이스가 통과 :

if (chrome.notifications.getPermissionLevel) { 

오류 메시지 : 오류 메시지가 chrome.notifications 다음 줄에 정의되지 않은 것을 말한다

"minimum_chrome_version": "29.0.1547.76" 

이 알림을 지원하는 구글 크롬의 버전을 사용하는 모든 클라이언트를 강제해야한다 : 등 또한, 내의 manifest.json에서 다음과 같은 규칙을 가지고있다. 워드 프로세서에 따르면, http://developer.chrome.com/extensions/notifications.html, 알림 크롬 28 안정 갔다 :

Availability: Stable since Chrome 28.

또한, 나는 다음과 같은 권한을 선언 한 :

"permissions": [ 
    "contextMenus", 
    "management", 
    "notifications", 
    "storage", 
    "identity", 
    "webRequest", 
    "webRequestBlocking" 
] 

내가 알림 권한을 요청하고있어 사용자 보장하고 현재 브라우저 버전을 사용 중입니다.

누구든지 chrome.notifications가 정의되지 않은 다른 이유를 알고 있습니까? 나는 그것이 간단하다는 것을 확실히 할 수 있다는 것을 알고 있지만, 나는 무엇이 일어나고 있는지 알고 싶다. 감사.

답변

2

내가 생각할 수있는 유일한 이유는 API가 Linux에서 지원되지 않는다는 것입니다. the docs에 따르면

는 :

Note: This API is currently available on ChromeOS, Windows, and Mac.

나는 최신 버전으로 시도하지 않은,하지만 난이 알고있는 경우 이전 크롬 버전과 리눅스에 대한 문제 (예를 들어, 등 표시되지 않은 버튼).

현재 다른 배포판에 다르게 영향을 주는지 확신 할 수 없습니다. 어쨌든 실패한 클라이언트의 Chrome 버전과 OS를 확인하는 것이 좋습니다.

+1

매우 가능성이 있습니다. 고맙습니다. 나는 오늘 그것을 들여다 볼 것이고, 나는 그 의견을 받아 들일 것임을 확신 할 수있다. –

관련 문제