ionic3.12使用极光推送问题求助

jpush
第三方插件
cordova
标签: #<Tag:0x00007fb830898218> #<Tag:0x00007fb83070be90> #<Tag:0x00007fb83070bbe8>

(Shanshangzhiren) #1

我目前使用ionic3.12,用cordova plugin add jpush-phonegap-plugin --variable APP_KEY=your_jpush_appkey

加入了插件,然后使用declare var window;导入了。

initJPush() {
        //启动极光推送
        if (window.plugins &&  window.plugins.jPushPlugin) {
          window.plugins.jPushPlugin.init();
          //window.plugins.jPushPlugin.init().then(res => { alert(res) });
          document.addEventListener("jpush.receiveNotification", () => {
            this.msgList.push({content:window.plugins.jPushPlugin.receiveNotification.alert})
          }, false);
          //let regeidtId = window.plugins.jPushPlugin.getRegistrationID();
          //window.plugins.jPushPlugin.getRegistrationID().then(res => { alert(res) });
          //alert(window.plugins.jPushPlugin.getRegistrationID());
          //this.getRegistrationID();
          alert("注册极光推送");
        }
      }
      setAlias() {
      //设置Alias
        if (this.alias && this.alias.trim() != '') {
          window.plugins.jPushPlugin.setAlias(this.alias);
          alert("设置别名:"+ this.alias);
        }else alert('Alias不能为空');
      }
      getRegistrationID() {
        alert('getRegistrationID');
        //window.plugins.jPushPlugin.setTagsWithAlias('test2017','test2017');
        //window.plugins.jPushPlugin.setTags("test2017");
        //alert(window.plugins.jPushPlugin.resumePush());
        //alert(window.plugins.jPushPlugin.resumePush());
        alert(window.plugins.jPushPlugin.setAlias('test2017'));



        //window.plugins.jPushPlugin.getRegistrationID()
        //.then(res => alert(res))
        //.catch(err => alert(err))
      }

这个些代码中,init(),stopPush(),resumePush()这三个功能可以用;在使用android模拟器时,可以收到通知的推送,可以关闭接收和打开接收功能。但其它的功能都不行,例如获取注册ID,设置别名,标签等,都不行。


#2

不行报了什么错?

请不要在stoppush之后 resumepush之前调用这些个API。

请在init彻底成功后再去调用这些API


(Shanshangzhiren) #3

这个我知道,是在通知可以到达的时候进行的其它方法的,但是只收到回复是undefined,在服务端也说找不到别名之类的


#4

将你上面的这个操作产生的日志给一下,完整的

以及,你所使用的插件的具体版本号


(Hevin) #5

收到回复是 undefined,是什么意思?插件版本是多少?


(Shanshangzhiren) #6

问题已经解决,现在使用了 https://github.com/HsuanXyz/ionic2-jpush 的方法。
cli packages: (/usr/local/lib/node_modules)

@ionic/cli-utils  : 1.12.0
ionic (Ionic CLI) : 3.12.0

global packages:

cordova (Cordova CLI) : 7.0.1 

local packages:

@ionic/app-scripts : 2.1.4
Cordova Platforms  : android 6.2.3
Ionic Framework    : ionic-angular 3.6.1

System:

Android SDK Tools : 26.0.2
ios-deploy        : 1.9.2 
ios-sim           : 5.0.13 
Node              : v8.5.0
npm               : 5.4.2 
OS                : macOS High Sierra
Xcode             : Xcode 9.0 Build version 9A235 

Misc:

backend : legacy

cordova plugin ls
:heavy_check_mark: Running command - done!
cordova-plugin-device 1.1.4 “Device”
cordova-plugin-jcore 1.1.8 “JCore”
cordova-plugin-splashscreen 4.0.3 “Splashscreen”
cordova-plugin-statusbar 2.2.2 “StatusBar”
cordova-plugin-whitelist 1.3.1 “Whitelist”
ionic-plugin-keyboard 2.2.1 “Keyboard”
jpush-phonegap-plugin 3.2.4 “JPush”


(yanghao201208) #7

想问你这个 initJPush()启动是放在什么位置去执行的,我是在ionic登入账号时去执行,导致每次登入账号都会 执行里面的jPushPlugin.init(),这样重复启动在极光后台推送一条,这个jpush.receiveMessage他会执行你登入启动init()次数


(lesixi) #8

我用的版本和楼主的一样,出现的问题也一样,无法设置别名及标签,但可获取Registration ID,并在后台可通过Registration ID来推送。然后尝试了楼主提供的链接方法,在设置别名时 setAlias( Alias : string ){
this.jpush.setAlias(Alias).then((res)=>{
alert(JSON.stringify(res) );
}).catch((err)=>{
alert(JSON.stringify(err) );
});返回的结果是“ok”,但在后台推送又不得,请教有哪里出错了??


(Shanshangzhiren) #9

我原来的获取registratioinID也不行,也不能用ID推送,和你遇到的还不太一样。你可以试试联系一下那个连接的作者问一下


(Shanshangzhiren) #10

我的initJPush就是在APP每次登录时,运行一次的。还没有使用你说的jpush.receiveMessage这个方法。所以对你说的不太清楚,你可以问一下官方或者那个链接的作者