2017-09-13 20 views
1

최근에 내 앱에 푸시 알림 기능을 추가했습니다. 이 link에있는 FCN 플러그인을 사용 중이며 Ionic 2 프레임 워크를 사용하여 개발 중입니다. 알림이 전달되지만 앱을 탭하면 필요한 내 페이지가 아닌 앱의 홈페이지가 열립니다.푸시 알림시 cliking 후 페이지 열기 Ionic 2 iOS

내가 NavController를 사용하는 경우 대신 내게이 오류 준다 아무것도에게

하지 않습니다 어떻게 든이 코드

declare var FCMPlugin; 
@Component({ 
    templateUrl: 'app.html' 
}) 
export class MyApp { 
    rootPage:any = HomePage; 
    horoscopePage:any = HoroscopeHomePage; 
    @ViewChild(Nav) nav: Nav; 

    ********************** 

    FCMPlugin.onNotification(function(data){ 
     if(data.wasTapped){ 
     //Notification was received on device tray and tapped by the user. 
     if(data.topic =="horoskopi" && data.type=="list"){ 

     console.log(JSON.stringify(data)); 

     this.nav.push(this.horoscopePage); 

     } 

     }else{ 

     if(data.topic =="horoskopi" && data.type=="list"){ 

     console.log(JSON.stringify(data)); 

     this.nav.push(this.horoscopePage); 
     } 
     } 
    }); 
    }); 

코드 this.nav.push(this.horoscopePage);의 줄을 사용했다

:

MyApp_Host.html:1 ERROR Error: No provider for NavController! 
    at injectionError (core.es5.js:1231) 
    at noProviderError (core.es5.js:1269) 
    at ReflectiveInjector_._throwOrNull (core.es5.js:2770) 
    at ReflectiveInjector_._getByKeyDefault (core.es5.js:2809) 
    at ReflectiveInjector_._getByKey (core.es5.js:2741) 
    at ReflectiveInjector_.get (core.es5.js:2610) 
    at AppModuleInjector.NgModuleInjector.get (core.es5.js:3578) 
    at resolveDep (core.es5.js:11039) 
    at createClass (core.es5.js:10903) 
    at createDirectiveInstance (core.es5.js:10723) 

답변

1

당신을 public navCtrl: NavControllerconstructor에 추가 한 다음 코드를

내가 이오니아의 공식 문서에서 살펴 보았다
this.navCtrl.push(this.horoscopePage); 
+0

Dr. Geek 나는 이것을 시도해 보았습니다. 그러나 장치에 응용 프로그램을 설치할 때 스플래시 화면이로드 된 후 빈 화면이 나타납니다. – Xhulio

+0

https://stackoverflow.com/questions/46139512/how-can-i-decrease-the-ionic-cordova-project-start-duration –

+0

문제를 설명하는 것이 맞는지 알 수 없습니다. 앱은 app.component.ts 클래스에 NavController를 추가 할 때만 빈 화면을 표시합니다. 제거하면 평소와 같이 앱이 열립니다. – Xhulio

0

음 후에, 나는 당신이 NavController를 주입 할 수 없기 때문에 탐색 컨트롤러에있는 모든 구성 요소가 있으므로 root component의 자녀이기 때문에 우리가 app.component.tsNavController을 사용할 수 없다는 것을 발견 그들은 주사 할 수 없습니다. 더 많은 것을 위해 here를 누르십시오.

FCM.onNotifications() 내부에 새로운 Page을 삽입 할 수없는 이유는 응용 프로그램의 scope을 변경했기 때문입니다. 해결책은 간단합니다 :

FCMPlugin.onNotification(
     (data)=>{ 
      if(data.wasTapped){ 
      //do something 
      } 
      else {  
       //do something 
      } 
     }); 
+0

화살표 기능을 사용하고 있습니다. 여전히 동일한 오류가 발생합니다. –