极光推送官方版的 phonegap 插件在这里。
由于官方版插件 ios 版暂时没有打开通知的方法,所以在官方基础上修改了下,修改后的插件放在了这里,下面说明以修改后的插件为准。(感谢极光官方大神viper耐心帮助,同时也参考了下@lanceli大神的cnodejs-ionic项目)
极光账户设置部分可以参考小和尚的这篇分享。
下面主要说明项目代码部分修改。
新建一个 ionic项目
$ ionic start --id com.ionichina.ionicjpush ionic_jpush tabs
注:修改 id 为自己应用的 Bundle identifier
添加 IOS 平台
$ cd ionic_jpush
$ ionic platform add ios
安装插件
$ ionic plugin add https://github.com/DongHongfei/jpush-phonegap-plugin.git
等待时间比较长,你也可以像小和尚文章里介绍的先下载下来,再安装,但这个过程是跑不了的
(接下来,蛋疼的事情开始了)
修改配置
- 修改:
ionic_jpush\plugins\cn.jpush.phonegap.JPushPlugin\src\ios\PushConfig.plist
修改对应的APP_KEY和CHANNEL(渠道)为你自己申请的值,
注意
确保有如下代码,不然后面 Xcode 运行会警告:
1 | <key>APS_FOR_PRODUCTION</key> |
在 js 中添加通知实现
- 在
app.js
最后添加一个 push 工厂(参考了@lanceli大神的Ccnodejs-ionic项目)
1 | .factory('Push', function() { |
在 app.js 的 run 函数里定义通知回调函数
记得在 run 函数里引用 Push 先
1 | // push notification callback |
在 $ionicPlatform.ready 里进行初始化
1 | //初始化 |
编译 IOS 项目
$ ionic build ios
(接下来,更蛋疼的事情开始了)
修改配置 IOS 项目(不要问我为啥)
- 修改 AppDelegate.m,
添加
1 | #import "APService.h" |
didFinishLaunchingWithOptions
函数中添加
1 |
|
didRegisterForRemoteNotificationsWithDeviceToken
中添加
1 | // Required |
添加函数
1 | - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { |
OC 代码算是完事儿,然后就是配置
- 修改项目 Capabilities,打开 Background Modes,勾选最后一项Remote notications
- 设置证书,这个就不教了,网上一大堆
- Xcode 这边就算配置完了
接下就是设置一些Xcode常规操作,编译运行,从极光官方控制台发送一条通知,然后查看Xcode控制台,应该就会有推送的通知数据打印了。
下面的事儿你自己应该搞的定。
示例代码我放在了这里。