极光推送的坑

极光推送开发环境可以收到,生产环境收不到推送

初次发现这个问题的时候 首先排查的就是证书配置。

绿色的表示没什么问题。

开发环境的证书跟生产环境的证书 都已经配置完成,

下面我们看看极光官网的配置

这个也没有问题。 然后看代码

//极光植入

    [JPUSHService setBadge:0]; //JPush服务器角标置为0

    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];//app角标置为0

    //极光推送

    //notice: 3.0.0及以后版本注册可以这样写,也可以继续用之前的注册方式

    JPUSHRegisterEntity * entity = [[JPUSHRegisterEntity alloc] init];

    entity.types = JPAuthorizationOptionAlert|JPAuthorizationOptionBadge|JPAuthorizationOptionSound;

    if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {

        // 可以添加自定义categories

        // NSSet<UNNotificationCategory *> *categories for iOS10 or later

        // NSSet<UIUserNotificationCategory *> *categories for iOS8 and iOS9

    }

    [JPUSHService registerForRemoteNotificationConfig:entity delegate:self];

    

    //JAppKey : 极光推送申请下来的appKey Jchannel : 可以直接设置默认值即可 Publish channel

    //是否是开启的

    BOOL JPush = NO;

    if ([kMemberLoginProductFlag isEqualToString:@"YES"])

    {

        JPush = YES;

    }

    else{

        JPush = NO;

    }

    

    [JPUSHService setupWithOption:launchOptions appKey:JiGuangAppKey

                          channel:nil apsForProduction:JPush]; //如果是生产环境应该设置为YES

 

#pragma mark - 向服务器上报Device Token    极光代理

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {

    

    // Required - 注册 DeviceToken

    

    [JPUSHService registerDeviceToken:deviceToken];

    

}

#pragma mark - 极光推送代理

- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler {

    

    NSDictionary * userInfo = notification.request.content.userInfo;

    DLog(@"@@@@@@@进来了进来了  %@",userInfo);

    if([notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]])  {

        [JPUSHService handleRemoteNotification:userInfo];

    }

    completionHandler(UNNotificationPresentationOptionBadge|UNNotificationPresentationOptionSound|UNNotificationPresentationOptionAlert);  // 需要执行这个方法,选择是否提醒用户,有Badge、Sound、Alert三种类型可以选择设置

}

 

- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler {

    

    NSDictionary * userInfo = response.notification.request.content.userInfo;

    DLog(@"@@@@@@@进来了进来了  %@",userInfo);

    if([response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {

        [JPUSHService handleRemoteNotification:userInfo];

        

    }

    completionHandler(); // 系统要求执行这个方法

    [JPUSHService setBadge:0]; //JPush服务器角标置为0

    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];//app角标置为0

    

    //这里是自定义了 。。。。。。

    if([UIApplication sharedApplication].applicationState == UIApplicationStateActive || [UIApplication sharedApplication].applicationState == UIApplicationStateBackground)

    {

        DLog(@"@@@@@@@进来了");

        

        [self pushViewControllerWith:userInfo];

    }else

    {

        

//        if (![USER_DEFAULT valueForKey:kNotificationPushDictionary])

//        {

//            [self pushViewControllerWith:userInfo];

//        }

        DLog(@"@@@@@@@进来了进来了");

                [self pushViewControllerWith:userInfo];

    }

}

代码看了半天也没啥问题。最后发现是打包的问题,测试环境直接打包就行。

但是生产的 必须一定要adhoc打包才能测试 其他方式打包安装不行。坑啊 。

其次,前后台所有的sdk版本要可以对的上的。版本不统一也可能出现推送收不到的问题。瞎忙了2天,快上线了,头都大了。

<think>嗯,用户之前问过开发聊天软件需要哪些技术,现在又问做一款手机App的流程。看来他们可能正在计划开发一个App,特别是聊天类的。我需要从之前的回答中扩展,把技术细节转化为开发流程。 首先,用户可能不太清楚App开发的全流程,需要分步骤讲解。之前的回答比较技术,现在要更偏向项目管理。流程一般包括需求分析、设计、开发、测试、上线、维护这几个阶段。 需要确定用户是否了解每个阶段的具体内容,可能需要详细说明每个步骤的关键任务。比如需求分析阶段需要明确目标用户和核心功能,设计阶段包括UI/UX,开发分前后端,测试分不同阶段,上线涉及应用商店审核,维护包括更新和用户反馈。 另外,用户可能想知道如何高效管理开发流程,是否需要敏捷开发或者使用哪些工具。还要考虑跨平台还是原生开发,之前提到过Flutter或React Native,这里可以再次强调选择技术栈的重要性。 可能还需要提醒用户注意预算和时间管理,以及法律合规,比如隐私政策和数据安全。测试部分要强调不同设备和场景的覆盖,确保稳定性。上线后的运营和推广也是关键,用户可能容易忽视这部分。 总之,需要将技术细节转化为流程步骤,保持结构清晰,覆盖从构思到上线的全过程,并给出实用建议,帮助用户全面了解开发App的各个环节。开发</think>一款手机App需要系统化的流程管理,以下是详细的步骤说明和关键点: --- ### **一、需求分析与规划** 1. **明确目标** - **核心功能**:定义App的核心用途(如社交、电商、工具)。 - **用户群体**:分析目标用户的年龄、习惯、痛点(如年轻用户偏好简洁交互)。 - **竞品调研**:研究类似App的功能和用户评价,寻找差异化优势。 2. **需求文档(PRD)** - 撰写文档描述功能列表、用户场景、技术可行性(如是否需要实时通信)。 - 使用工具:Confluence、Notion。 --- ### **二、产品设计与原型** 1. **信息架构(IA)** - 设计App的页面层级和导航逻辑(如底部Tab栏包含聊天、联系人、设置)。 2. **UI/UX设计** - **线框图(Wireframe)**:用工具(Figma、Sketch)绘制页面布局。 - **高保真原型**:添加交互效果(如点击按钮跳转动画)。 - **设计规范**:统一字体、颜色、图标风格(参考Material Design或iOS HIG)。 3. **用户测试原型** - 通过工具(InVision、Proto.io)让用户试用原型,收集反馈优化流程。 --- ### **三、技术选型与架构设计** 1. **选择开发模式** - **原生开发**:性能最优(Android用Kotlin/Jetpack Compose,iOS用Swift/SwiftUI)。 - **跨平台开发**:节省成本(Flutter、React Native)。 - **混合开发**:部分功能内嵌H5(适用于简单应用)。 2. **后端架构** - **服务器**:AWS、阿里云等云服务。 - **数据库**:关系型(MySQL)或NoSQL(MongoDB)。 - **API设计**:使用RESTful或GraphQL(如Apollo Server)。 3. **第三方服务集成** - 推送(Firebase、极光推送)、支付(支付宝SDK、Stripe)、地图(高德、Google Maps)。 --- ### **四、开发阶段** 1. **敏捷开发管理** - 使用Jira、Trello拆分任务为Sprint,每日站会同步进度。 2. **前端开发** - **Android**:Jetpack组件(Room数据库、ViewModel)。 - **iOS**:Combine框架处理数据流,CoreData本地存储。 - **跨平台**:Flutter的Bloc状态管理,React Native的Redux。 3. **后端开发** - 实现用户认证(JWT/OAuth)、API接口、消息队列(RabbitMQ/Kafka)。 - 示例代码(Node.js + Express): ```javascript app.post('/login', (req, res) => { const { username, password } = req.body; // 验证逻辑... res.json({ token: generateJWT(user) }); }); ``` 4. **版本控制** - 使用Git(GitHub/GitLab)管理代码,分支策略(如Git Flow)。 --- ### **五、测试与优化** 1. **测试类型** - **单元测试**:JUnit(Android)、XCTest(iOS)。 - **UI自动化**:Espresso(Android)、XCUITest(iOS)。 - **压力测试**:JMeter模拟高并发请求。 2. **关键问题排查** - 内存泄漏(Android Profiler、Xcode Instruments)。 - 网络延迟优化(CDN加速、压缩API响应数据)。 3. **用户Beta测试** - 通过TestFlight(iOS)或Firebase App Distribution(Android)分发测试版。 --- ### **六、上架与发布** 1. **应用商店准备** - **材料清单**: - 应用图标(1024x1024 PNG)。 - 截图(需符合平台尺寸规范)。 - 描述文案(突出核心功能,关键词优化)。 2. **提交审核** - **苹果App Store**:需遵守隐私政策(如声明数据收集类型)。 - **Google Play**:通过Content Rating问卷。 - 审核周期:通常1-7天,需预留时间处理驳回问题(如支付逻辑不符规范)。 3. **发布策略** - 分阶段发布(先开放10%用户,监控崩溃率)。 - 配合ASO(应用商店优化)提升搜索排名。 --- ### **七、运营与迭代** 1. **数据监控** - 使用Firebase Analytics、Mixpanel分析用户行为(如日活、留存率)。 - 监控崩溃日志(Sentry、Bugsnag)。 2. **用户反馈** - 内嵌反馈表单,或通过社交媒体收集需求。 - 快速响应应用商店的差评。 3. **版本迭代** - 定期更新(如每两周修复Bug,每月新增功能)。 - 使用热修复(如Tinker)快速修复紧急问题。 --- ### **八、成本与时间参考** | **阶段** | **时间** | **成本(参考)** | |----------------|---------------|-------------------------| | 需求与设计 | 2-4周 | ¥10,000-30,000 | | 开发 | 3-6个月 | ¥200,000-500,000+ | | 测试与上架 | 1-2个月 | ¥20,000-50,000 | | 维护(年) | 持续 | ¥50,000-100,000+/年 | --- ### **避指南** 1. **避免功能堆砌**:MVP(最小可行产品)优先上线核心功能。 2. **法律合规**:隐私政策需明确数据使用方式(参考GDPR)。 3. **性能优化**:冷启动时间控制在1秒内,包体积小于100MB。 如果需要某个环节的详细方案(如如何设计高并发消息系统),可以进一步讨论!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值