ionic开发ios怎么获取ionic 极光推送送的内容

拒绝访问 |
| 百度云加速
请打开cookies.
此网站 () 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(386d0-ua98).
重新安装浏览器,或使用别的浏览器1630人阅读
Ionic(1)
附上我的真言(尽信书不如无书),别人的始终是别人的不一定适合你,你只有走出自己的路,才能达到武道巅峰( bb一下)
,你百度ioni极光推送会出现一大群,但是你按照他的来,一定会出现这样那样的bug,只有结合别人的经验,找到适合你自己的才能解决问题,我就是自己从坑里爬出来的
先给2篇网上流传最广的Ionic项目中使用极光推送的博客
(github极光推送插件安装方法)
,我是结合以上3篇,加我自己的探索和与别人探讨弄出来的
我就写我的步骤吧.
一,首先你要在极光推送官网注册一个账号,并创建应用,这是没得变的
这里应用名称和图标都随意,但包名是很重要的,这个得去项目中去找,要和项目中的一致。
在项目的config.xml.中,
widget id=&com.ionicframework.myionic287942&,id里面就是你的包名
二,第二步就是下载极光推送的插件了,找个盘建个文件夹放插件,注意文件夹的命名,不要带空格什么的,否则你添加插件的时候,路径就存在问题,会添加不上
打开cmd(最好以管理员方式打开),cd(进入)你刚刚创建的文件夹目录下面:
git clone /jpush/jpush-phonegap-plugin.git(你如果没安装git的话,去按个git吧 ,要不你就网页打开去downLoad zip,然后解压吧,还是放这个文件夹里面)
1,下载完成后把插件文件夹改名名为$JPUSH_PLUGIN_DIR(注意)
2,打开插件目录\src\android\JPushPlugin.java 文件,找到import package_name.R,替换为你的包名,注册该应用的包名,例如(com.thi.pushtest)。(前面提醒过的应用包名 )
三,添加插件
1,打开cmd(最好以管理员方式打开),cd(进入你的项目目录下面)
添加运行项目的平台(ionic platform add android),ionic platform add ios
添加极光推送插件:ionic plugin add
插件目录($JPUSH_PLUGIN_DIR) 后面带上你注册应用的key
--variableAPI_KEY=your_jpush_appkey
例如我的就是
F:\CodeRepository\myIonic&
ionic plugin add F:\plugin\$JPUSH_PLUGIN_DIR --variableAPI_KEY=68db61ebd52cb21c4c95b53a
(这是很重要的一步,文章最开始我给的两篇博客都没有提到的,是我根据git的安装方法自己摸索出来的,必须在后面加上key)
安装成功后你的项目会多出来一个插件文件夹
添加device插件(因为极光推送插件依赖这个):
plugin add org.apache.cordova.
最后在app.js文件中添加启动推送服务代码
//启动极光推送服务
window.plugins.jPushPlugin.init();
//调试模式
window.plugins.jPushPlugin.setDebugMode(true);
四,7、在运行中会一直显示缺少统计代码,对java文件,文件位置
在platforms/android/src/你的路径/你的包名/MainActiovity.java文件作修改
1,先导入一个接口,
import cn.jpush.android.api.JPushI
2,添加2个方法
protected void onResume() {
super.onResume();
JPushInterface.onResume(this);
protected void onPause() {
super.onPause();
JPushInterface.onPause(this);
至此所以配置已经完成我们可以build项目了
打开cmd,进入项目目录下面,执行
build android(把项目编译成apk文件),
(可能会出现报错,我说的是可能,你就把项目中的platfroms文件删除;了,在重新添加一次平台,再执行一次第四步的,应该能解决)
然后再执行
run android(把项目在android上运行,最好插上android手机)
现在你的项目就运行到手机上了,然后去极光推送官网找到你的应用然后推送消息吧。
这里还有一个可能会报错的地方就是你在官网推送的时候会报错,我就不把所有的错误列举了
希望我的博客能给你一定的帮助,但还是那句话,自己的路才是最适合的,希望你能结合我的博客,和文章开始的3篇链接博客,走出你自己的bug解决之路
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:41242次
排名:千里之外
原创:42篇
评论:10条
(2)(10)(2)(1)(4)(20)(5)(4)(3)(2)iOS-极光推送开发小结 - 简书
iOS-极光推送开发小结
一、我的开发
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 程序在死亡状态(杀掉进程),再次启动,收到推送通知,跳转至对应页面
if ([launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]) {
NSDictionary * userInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
self.notificationUserInfo = userI
// 这里延迟1秒 否则不执行跳转
// 妈蛋,为了这个,废了我N个小时。测试时使用了通知 本地通知等多种方式均未成功。
// 程序启动的过程中,直接执行push maybe 出错,原理现在还不明了
执行个事件,就开启个线程?像点击按钮就触发一个线程?
[self performSelector:@selector(skipToMessageCenter) withObject:nil afterDelay:1];
return YES;
#pragma mark - 远程推送接受方法(极光推送)
// 程序在未死亡状态,通知到来,会执行此代理,这里做跳转就好
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
if (application.applicationState == UIApplicationStateActive) {
if(![[User sharedInstance] isRefuseJPush]){
} else if (application.applicationState == UIApplicationStateInactive) {
if(![[User sharedInstance] isRefuseJPush]){
MessageModel * messageModel = [[MessageModel alloc] initWithNoticeDic:userInfo];
BOOL isSaveSuccess = [[CustomMessageRepository alloc] insertCustomMessage:messageModel];
if (isSaveSuccess) {
NSLog(@"缓存通知成功!");
NSLog(@"缓存通知失败!");
MessageToSpecificViewController * messageToSpecificViewController = [[MessageToSpecificViewController alloc] init];
[messageToSpecificViewController messageFromViewController:self.rootViewController toSpecificViewControllerWithMessage:messageModel];
[self gainUserInfoDicWithDic:userInfo];
[APService handleRemoteNotification:userInfo];
-(void)skipToMessageCenter {
dispatch_async(dispatch_get_main_queue(), ^{
// 根据通知内容,跳转至不同页面
MessageModel * messageModel = [[MessageModel alloc] initWithNoticeDic:self.notificationUserInfo];
MessageToSpecificViewController * messageToSpecificViewController = [[MessageToSpecificViewController alloc] init];
[messageToSpecificViewController messageFromViewController:self.rootViewController toSpecificViewControllerWithMessage:messageModel];
注:因为推送缺陷,被黑成狗了。所以做什么事情要尽心尽力做好。认真、负责...
二、远程推送相关
远程推送应用配置过程
1. 创建支持远程推送功能的App ID
2. 申请开发者证书,并选中刚刚创建的App ID
3. 下载CER文件,并导入钥匙串管理
4. 申请发布证书,并选中刚刚创建的App ID
5. 下载CER文件,并导入钥匙串管理
6. 检查App ID,确认证书已经指定
远程推送应用程序开发过程
1. 新建应用程序
2. 指定AppID,在上设置的AppID
#ifdef __IPHONE_8_0
// 注册接收通知的类型
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil];
[application registerUserNotificationSettings:settings];
// 注册允许接收远程推送通知
[application registerForRemoteNotifications];
// 如果是iOS7.0,使用以下方法注册
[application registerForRemoteNotificationTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound];
// 当得到苹果的APNs服务器返回的DeviceToken就会被调用
5acf31b5 3e340b39 68affd25 122f0ce1 3fc2e5b
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
NSLog(@"deviceToken是:%@", deviceToken);
// 接收到远程通知,触发方法和本地通知一致
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
NSLog(@"%@", userInfo);
*** 使用后台的远程消息推送
1& 在Capabilities中打开远程推送通知
2& 实现代理方法
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
远程消息数据格式:
{"aps" : {"content-available" : 1},"content-id" : 42}
执行completionHandler有两个目的
1& 系统会估量App消耗的电量,并根据传递的UIBackgroundFetchResult 参数记录新数据是否可用
2& 调用完成的处理代码时,应用的界面缩略图会自动更新
注意:接收到远程通知到执行完网络请求之间的时间不能超过30秒
if (userInfo) {
int contentId = [userInfo[@"content-id"] intValue];
ViewController *vc = (ViewController *)application.keyWindow.rootViewC
[vc loadDataWithContentID:contentId completion:^(NSArray *dataList) {
vc.dataList = dataL
NSLog(@"刷新数据结束");
completionHandler(UIBackgroundFetchResultNewData);
completionHandler(UIBackgroundFetchResultNoData);
三、证书相关
开发者账号界面.png
每天进步一点点...ionic-app(3)
跨平台APP开发(3)
1.新建一个ionic项目
$ ionic start
--id com.ionichina.ionicjpush ionic_jpush tabs
注:修改id为自己应用的Bundle identifier(Bundle identifier为iOS app的唯一标识)
2.添加iOS平台
cdionicjpush ionic platform add ios
3.安装插件
$ ionic plugin add
4.修改配置
修改ionic_jpush\plugins\cn.jpush.phonegap.JPushPlugin\src\ios\PushConfig.plist 修改对应的APP_KEY和CHANNEL(渠道)
注:APP_KEY 为极光中注册的,CHANNEL 获取APP的渠道,它的值可以填 App Store。
&APS_FOR_PRODUCTION&
5.在app.js添加实现通知
.factory('Push', function() {
setBadge: function(badge) {
if (push) {
console.log('jpush: set badge', badge);
plugins.jPushPlugin.setBadge(badge);
setAlias: function(alias) {
if (push) {
console.log('jpush: set alias', alias);
plugins.jPushPlugin.setAlias(alias);
check: function() {
if (window.jpush && push) {
plugins.jPushPlugin.receiveNotificationIniOSCallback(window.jpush);
window.jpush = null;
init: function(notificationCallback) {
console.log('jpush: start init-----------------------');
push = window.plugins && window.plugins.jPushP
if (push) {
console.log('jpush: init');
plugins.jPushPlugin.init();
plugins.jPushPlugin.setDebugMode(true);
plugins.jPushPlugin.openNotificationInAndroidCallback = notificationC
plugins.jPushPlugin.receiveNotificationIniOSCallback = notificationC
记得在run函数中引用下面一段代码
var notificationCallback = function(data) {
console.log('received data :' + data);
var notification = angular.fromJson(data);
var isActive = notification.
if (ionic.Platform.isIOS()) {
window.alert(notification);
最后在 $ionicPlatform.ready 里进行初始化
Push.init(notificationCallback)
//设置别名
Push.setAlias("")
6.编译ios项目
$ionic build ios
下面是进行配置ios项目(参考jpush最新的ios集成sdk)
文档里面有详细的说明,这里就不废话了。
其中对于没做过ios开发比较难的部分,可能就是推送证书的申请了。
这个网上教程一大堆。可以参考
最后还要修改项目 Capabilities,打开 Background Modes,勾选最后一项Remote notications。
完成以前的操作,基本就可以实现ios手机端的推送了。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:10251次
排名:千里之外
原创:22篇
(1)(7)(1)(2)(4)(1)(1)(2)(4)(1)}

我要回帖

更多关于 ionic 极光推送 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信