点击推送通知后打开页面 Ionic 2 iOS
Posted
技术标签:
【中文标题】点击推送通知后打开页面 Ionic 2 iOS【英文标题】:Open a page after cliking on a push notification Ionic 2 iOS 【发布时间】:2017-09-13 15:12:46 【问题描述】:最近,我一直在我的应用程序中添加推送通知功能。我正在使用在 link 上找到的 FCN 插件,并且我使用 Ionic 2 框架进行开发。通知已发送,但当我点击它时,它只会打开应用程序的主页,而不是我需要的内页。
我用过这段代码
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);
没有做任何事情
当我改用 NavController 时,它给了我这个错误:
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: NavController
添加到constructor
然后将代码更改为
this.navCtrl.push(this.horoscopePage);
【讨论】:
博士。极客我已经尝试过了,但是当我在设备上安装应用程序时,它会在启动画面完成加载后给我一个空白屏幕。 ***.com/questions/46139512/… 我不知道我对问题的解释是否正确。仅当我在 app.component.ts 类中添加 NavController 时,该应用程序才会给我一个空白屏幕。如果我删除它,应用程序会照常打开。 博士。极客我已经用应用程序在使用 NavController 时给我的错误更新了问题 能否分享项目文件来检查问题,因为通常它必须工作......【参考方案2】:好吧,在我查看了 Ionic 的官方文档之后,我发现我们不能在 app.component.ts
中使用 NavController
因为你不能注入 NavController
因为任何作为导航控制器的组件都是子组件root component
的一部分,所以它们不能被注入。更多请点击here。
我无法在FCM.onNotifications()
函数中推送新的Page
的原因是它更改了应用程序的scope
。解决方案很简单:只需使用箭头函数:
FCMPlugin.onNotification(
(data)=>
if(data.wasTapped)
//do something
else
//do something
);
【讨论】:
我也在使用箭头功能,但仍然出现同样的错误。以上是关于点击推送通知后打开页面 Ionic 2 iOS的主要内容,如果未能解决你的问题,请参考以下文章
在 ionic 3 中点击 One Signal 推送通知时如何导航到特定页面?