인프런 커뮤니티 질문&답변

늅늅님의 프로필 이미지
늅늅

작성한 질문수

Only Javascript만으로 배우는 하이브리드앱 패키징

Onesignal 솔루션 및 안드로이드 푸시 서비스 적용

onesignal 연동 시 black screen

작성

·

142

1

window.plugins.OneSignal.setAppId();

위 코드 입력 시 화면이 black screen으로 표시됩니다.

하지만 onesignal 연동도 잘되고 푸시 메시지 발송되 잘 됩니다.

원인이 무엇일까요? android 구버전과 최신버전 모두에서 그렇습니다.

답변 2

1

노란창문님의 프로필 이미지
노란창문
지식공유자

안녕하세요. 답변이 늦었습니다.
답변을 자체 등록을 하셨는데요.

"setAppId 선언을 onDeviceReady 함수 내에서 하지 않고..." 라고 답변다신 내용과는 상관관계가 없습니다만, 해결되셨다고 하니~ 다행입니다.

함수를 바깥으로 빼서 호출는건 차이가 없는데~ 이상하네요. ^^;
참고로 제가 현재도 매주 1개이상씩 계속 원시그널을 사용해 앱을 만들고 있지만~ 말씀하신 오류가 발생한적이 한번도 없습니다.
아래처럼 플러그인 버전에 따른 구문오류일수도 있으니 참고부탁드립니다.

----------------------------------------------------------------------------------------
cordova 원시그널 플러그인의 최신버전은 현재 5.1.x 버전이며~
appid 설정의 초기코드는 아래입니다.
window.plugins.OneSignal.initialize("YOUR_ONESIGNAL_APP_ID");

이전 old버전의 초기코드는 아래이구요.(강의영상에는 아래로 적용되어 있을겁니다.)
window.plugins.OneSignal.setAppId("YOUR_ONESIGNAL_APP_ID");

터미널창에서 아래 명령어로 원시그널 플러그인 버전을 확인하시고~ 5.1.0 이상의 버전이라면 위내용 참고하시면 될것 같습니다.
cordova plugin ls

5.1.0 이상의 버전이라면 아래처럼 원시그널 document 가이드 페이지에 예제소스가 나오니 참고하시면 됩니다.
참고 url : https://documentation.onesignal.com/docs/ionic-capacitor-cordova-sdk-setup

1

늅늅님의 프로필 이미지
늅늅
질문자

setAppId 선언을 onDeviceReady 함수 내에서 하지 않고 별도 함수를 선언하여 호출하니 에러가 해결되네요....

같은 오류 있으신 분들 참고하세요 ㅠㅠ

 

document.addEventListener('deviceready', onDeviceReady, false);
var ref = '';
function onDeviceReady() {
    var url = 'file:///android_asset/www/test.html';
  
    OneSignalInit();
}
function OneSignalInit() {
    window.plugins.OneSignal.setAppId('ㅇㅇㅇㅇㅇㅇ');
    window.plugins.OneSignal.setNotificationOpenedHandler(function(jsonData) {
        console.log('notificationOpenedCallback: ' + JSON.stringify(jsonData));
    });
    
    window.plugins.OneSignal.promptForPushNotificationsWithUserResponse(function(accepted) {
        console.log("User accepted notifications: " + accepted);
    });
}
늅늅님의 프로필 이미지
늅늅

작성한 질문수

질문하기