iOS PushMebaby

PushMebaby是测试远程推送是否可用的第三方框架

使用方法:

1.上github下载PushMebaby的源码

2.在本地尝试编译PushMebaby,可能会有Error

解决方法:把抛Error对应的代码 注释掉

//#include <CoreServices/../Frameworks/CarbonCore.framework/Headers/MacTypes.h>

3.在ApplicationDelegate.m填写deviceToken和certificate

  3.1 self.deviceToken = @"XXXXXXXXXXXXXXXXXXXXXXXXXXX";

  3.2把远程推送的开发证书,拖入项目,改名为apns.cer

4.运行PushMebaby

  4.1勾选"总是允许"

  

  4.2 PushMebaby是mac,在下图弹出框中点击send

  

5.补充Payload知识

payload的格式,可在苹果官方文档搜"Examples of JSON Payloads",有多种格式,下面是其中一种

{
    "aps" : {
        "alert" : {
            "body" : "Bob wants to play poker",
            "action-loc-key" : "PLAY"
        },
        "badge" : 5,
    },
    "diyInfo" : {
          "xxx" : "xxxx",
          "xxxx" : "xxxxxx",
    }
}

注:aps是不可以改的

要使远程推送的消息,附带额外的信息,可以在aps外面添加,例如上面的diyInfo

6.客户端接收到远程推送通知之后的解析工作

  6.1 aps里的信息,苹果自己会解析

  6.2 aps之外的信息,需要iOS开发自己解析

    6.2.1 场景一:在用户手机里,应用处于运行状态(双击home键,可以看到进程管理中看到)

    接收到远程推送消息,程序会自动调用AppDelegate.m里下面这个代理方法

    - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

    {

          // 参数userInfo就是上面提到的diyInfo

          NSLog(@"%@",userInfo);

    }

     

    6.2.2 场景二:在用户手机里,没有运行我们的应用

    接收到远程推送消息,程序会自动调用下面的方法

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    {

          // info是payload的全部信息

          NSDictionary *info = launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey];

      }

 

原文地址:https://www.cnblogs.com/oumygade/p/4232877.html