使用Pusher实现本地推送联调

简介: ios开发在测试推送的时候,联机运行的包,无法收到推送消息。只能是打包发布到appstore上,或者一些常见的内测分发平台,如fir、蒲公英等(目前所在公司就是这样的蛋疼,我记得以前推送可以联调的)。而为了验证一个推送就要打包一次,这个打包的过程又相当的漫长,着实蛋疼。因此有了有了本地推送数据联调的想法。

前言


ios开发在测试推送的时候,联机运行的包,无法收到推送消息。只能是打包发布到appstore上,或者一些常见的内测分发平台,如fir、蒲公英等(目前所在公司就是这样的蛋疼,我记得以前推送可以联调的)。而为了验证一个推送就要打包一次,这个打包的过程又相当的漫长,着实蛋疼。因此有了有了本地推送数据联调的想法。

为了适应这种环境,调研下,发现还有不少的好东西,如pusher的应用,极大的方便了应用的开发联调。在次记录一下。


1、准备

下载 NWPusher ,有现成的别人家的轮子,拿来用用不要介意,哈哈哈~


2、NWPusher应用

2.1、下载并导入

20210119180600180.png


2.2、页面说明

20210119180718803.jpg

如上图所示:


我们需要选择相应的Push开发测试证书,如果创建推送证书,可以参考【iOS推送证书(开发环境|生产环境)创建教程】,这里不介绍了,类似文章很多。


添加相应的deviceToken。


选择过期时间:有8种选择。


Expiry:None : 不会过期
  immediate(0) :立即
  1 minute :1分钟时
  5 minutes :5分钟时
  1 hour :1小时时
  1 day :1天时
  Far past(1) :遥远的过去
  Far future: :永远


选择优先级:3个


Pirority:None :没有优先级
  Conserve power(5) : 电量优先
  immediately(10) : 立刻,其优先级最高

Payload输入内容就是我们要传送的数据了:这个数据传输以JSON的格式存储。是必要按照APNs发送的Push格式的。Push消息常用的key如下:


1、aps:是其value是我们需要传送的内容。
  2、alert: 是其value就是弹出框需要展示的内容。
  3、badge: 是其value就是APP icon,展示的信息个数。
  4、sound: 是其value就是表示当有Push消息的时候,是否需要声音提示。


另外,alert中value值,可以是字符串,可以是字典。这个字典可以使用多对值,比如其key是title,subtitle,body等。其格式如下

{
  "aps": {
  "alert": {
    "title": "title",
    "subtitle": "subTitle",
    "body": "body"
  },
  "badge": 1,
  "sound": "default"
  }
}


当然不容的项目有不同的设计规则,下面一个格式,就是我近期项目的推送格式:


{
"_ge_":"1",
    "_gmid_":"1dnnjj7Jbc9dRt922w9nWA,OSAPNS-0119_mf4G4Pu25n5VqswIQmKjqA:d48abe211c63440fb1e255ebf773294d:",
    "_gurl_":"sdk.open.extension.getui.com:8123",
    "aps":{"alert":{
            "body":"弹窗内容!",
            "title":"弹窗标题!",
        },
        "badge":"1",
        "mutable-content":"1",
        "sound":"default",
    },
    "msg":"{\"msgcode\":\"推送id\",\"extend\":\"{\\\"msgid\\\":\\\"1B5C19200B0D4B0F97B52A0E737AA712\\\"}\",\"classId\":\"班级id\",\"schoolId\":\"学校id\",\"msgid\":\"消息id\",\"taskId\":\"任务id\"}",
}

3、device token获取


- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    __block NSString *__tokenStr = [self getHexStringForData:deviceToken];
    NSLog(@"deviceToken:%@",__tokenStr);
    UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
    pasteboard.string = __tokenStr;
}
- (NSString *)getHexStringForData:(NSData *)data {
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 13) {
        if (![data isKindOfClass:[NSData class]]) {
            return @"";
        }
        NSUInteger len = [data length];
        char *chars = (char *)[data bytes];
        NSMutableString *hexString = [[NSMutableString alloc]init];
        for (NSUInteger i=0; i<len; i++) {
            [hexString appendString:[NSString stringWithFormat:@"%0.2hhx" , chars[i]]];
        }
        return hexString;
    } else {
         NSString *myToken = [[data description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];
        myToken = [myToken stringByReplacingOccurrencesOfString:@" " withString:@""];
        return myToken;
    }
相关文章
|
3月前
|
Ubuntu jenkins 关系型数据库
eladmin前后端分离jenkins自动发版
eladmin前后端分离jenkins自动发版
|
8月前
|
Shell 开发工具 git
【gitee推送项目流程】
【gitee推送项目流程】
62 0
|
JavaScript Android开发
Vue 接口联调以及打包上线
Vue 接口联调以及打包上线
99 0
|
测试技术 iOS开发
iOS PushMeBaby 远程推送测试
iOS PushMeBaby 远程推送测试
187 0
|
jenkins Serverless 持续交付
在本地开发应用程序并将代码推送到远程代码仓库
在本地开发应用程序并将代码推送到远程代码仓库
130 0
|
iOS开发 开发者
远程推送
远程推送
282 0
远程推送
|
iOS开发
iOS本地推送通知的基本使用
简单介绍iOS的本地通知推送的基本使用步骤
1307 0
cordova实现消息推送(本地通知)
cordova实现消息推送(本地通知)
415 0
cordova实现消息推送(本地通知)
|
JSON 安全 机器人
拉仇恨!webhook + 企业微信给同事做了个代码提交监听工具
拉仇恨!webhook + 企业微信给同事做了个代码提交监听工具
1588 1
拉仇恨!webhook + 企业微信给同事做了个代码提交监听工具