澳门新葡亰娱乐网站-www.142net-欢迎您

澳门新葡亰娱乐网站是因为你还没有找到一条正确的致富之路,www.142net是将所有的游戏都汇集在一起的官方平台,因为澳门新葡亰娱乐网站这个网站当中有着大量的游戏攻略,托IP定位技术,传达终端直接到达的精准传播方式。

极光推送自定义消息和推送的区别,极光推送

来源:http://www.bhtsgq.com 作者:计算机知识 人气:58 发布时间:2020-04-29
摘要:图1花青部分是 APNs 推送,清水蓝部分是 JPush应用内推送首先呢,要求二个安顿好的工程,详见极光推送官方文书档案,恐怕直接下载现成工程。 三种鉴权方式的计划  在开班以前,首

图片 1图1 花青部分是 APNs 推送,清水蓝部分是 JPush 应用内推送首先呢,要求二个安顿好的工程,详见极光推送官方文书档案,恐怕直接下载现成工程。

三种鉴权方式的计划 

在开班以前,首先精通下自定义新闻和通报的几点分别。

自定义音讯的推送和透过APNS的推送有几点不均等:

极光推送自定义消息和推送的区别,极光推送。极光推送绝比较个推,除了今后的“公告”外,多了二个“自定义消息”,看一下法定文书档案中的一段解释:

商家需求布置极光,以前弄过百度的,感觉大概,结果遇坑了,在这里记录下

自定义务消防队息和公告的区分

  • 收下推送自定义音讯时推送文告栏不呈现
  • 自定义音信推送不经过APNS,所以说跟推送证书未有涉嫌
  • 只有app在前台时能力接过自定义新闻,未运转也许运行但处于后台时摄取不到(消亡了不想在app未运营时收到推送音信的难点卡塔尔国

1.唯有app在前台时技能接到推送新闻;(音信为注册公告选拔,在后台只怕未运维时布告无效)

通报:轻巧场景下的通报,客户能够不写一行代码,而完全由 SDK 来承当暗许的功效体现,以至暗中认可客商点击时展开应用的主分界面。自定义音讯:SDK 不会把自定义新闻展现到公告栏。所以调节和测量试验时,要求到日志里才足以看出服务器端推送的自定义音讯。自定义音信应当要由开辟者写 接受推送消息Receiver 来管理收到的新闻。

备考:使用的是3.0.7本子的、手提式有线电话机iOS 10

SDK初始化

Appdelegate文件

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

        // 极光推送
        if (UIDevice.current.systemVersion as NSString).floatValue >= 10.0  {

            if #available(iOS 10.0, *) {
                let entity = JPUSHRegisterEntity()
                entity.types = NSInteger(UNAuthorizationOptions.alert.rawValue | UNAuthorizationOptions.badge.rawValue | UNAuthorizationOptions.sound.rawValue)
                _ = JPUSHService.register(forRemoteNotificationConfig: entity, delegate: self)
            } else {
                // Fallback on earlier versions
            }

        } else if  (UIDevice.current.systemVersion as NSString).floatValue >= 8.0 {
            //可以添加自定义categories
            JPUSHService.register(forRemoteNotificationTypes: UIUserNotificationType.badge.rawValue | UIUserNotificationType.sound.rawValue | UIUserNotificationType.alert.rawValue, categories: nil)
        } else {
            //categories 必须为nil
            JPUSHService.register(forRemoteNotificationTypes: UIUserNotificationType.badge.rawValue | UIUserNotificationType.sound.rawValue | UIUserNotificationType.alert.rawValue, categories: nil)
        }

        var isJpushProduction: Bool
        #if DEBUG
            isJpushProduction = false
        #else
            isJpushProduction = true
        #endif

        JPUSHService.setup(withOption: launchOptions, appKey: JPUSHService_appKey, channel: "Publish channel", apsForProduction: isJpushProduction, advertisingIdentifier: nil)

        return true
    }

2.收下推送时推送通告栏是绝非出示的;(iOS10正是在前台收到源生推送只怕极光非自定义音讯推送通知栏也可能有显示的);

简短来讲,假若APP在前台,会一直收取文告和自定义音讯;借使APP不在前台,文告会通过APNs进行推送,而自定义新闻则会在应用软件步向前台后收到到。

1、一开首鲁人持竿官方介绍 .p12 方式鉴权格局,根据提示 配置了

照会(极光远程推送)

调用此 API 来获取应用程序对应的 RegistrationID。 独有当应用程序成功注册到 JPush 的服务器时才回来对应的值,不然重返空字符串。

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {

        JPUSHService.registerDeviceToken(deviceToken)

        /**
         completionHandler用于处理设置返回结果
         resCode返回的结果状态码
         registrationID返回registrationID
         */
        JPUSHService.registrationIDCompletionHandler { (resCode, registrationID) in
            print("resCode--", resCode, "    registrationID---", registrationID ?? "没有")
        }
    }

注册失利回调方法

func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {

        print("didFailToRegisterForRemoteNotificationsWithError----", error)
    }

iOS10之下的体系版本,收到本地文告(LocalNotification)时调用

func application(_ application: UIApplication, didReceive notification: UILocalNotification) {

        let userInfo = notification.userInfo;
        print("userInfo-------", userInfo ?? ["":""])
    }

听大人说iOS10之下iOS 7 及以上的系统版本,收到远程文告(RemoteNotification)时调用

private func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {

        JPUSHService.handleRemoteNotification(userInfo)
        // 收到远程通知后的处理
        handleTheRemoteNotification(userInfo: userInfo as NSDictionary)
        completionHandler(UIBackgroundFetchResult.newData)
    }

在iOS 10出来后,极光推出了上面的多个新措施来替代了以上的多少个方法。

iOS10及以上系统版本,app在后台(1、app在后台运转 2、锁屏状态 3、app关闭时)收到文告同期当顾客点击文告栏上的音信时调用

@available(iOS 10.0, *)
    func jpushNotificationCenter(_ center: UNUserNotificationCenter!, didReceive response: UNNotificationResponse!, withCompletionHandler completionHandler: (() -> Void)!) {

        let userInfo = response.notification.request.content.userInfo
        if response.notification.request.trigger?.isKind(of: UNPushNotificationTrigger.classForCoder()) == true {

            JPUSHService.handleRemoteNotification(userInfo)
            print("iOS10后台收到通知(当用户点击通知栏的时候)...")
            // 收到远程通知后的处理
            handleTheRemoteNotification(userInfo: userInfo as NSDictionary)

        } else {
            print("----本地通知")
        }

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

iOS10及以上系统版本,app处于前台时收取到通告时调用

@available(iOS 10.0, *)
    func jpushNotificationCenter(_ center: UNUserNotificationCenter!, willPresent notification: UNNotification!, withCompletionHandler completionHandler: ((Int) -> Void)!) {

        let userInfo = notification.request.content.userInfo

        if notification.request.trigger?.isKind(of: UNPushNotificationTrigger.classForCoder()) == true {
            JPUSHService.handleRemoteNotification(userInfo)
            print("iOS10 前台收到远程通知...")
            // 收到远程通知后的处理
            handleTheRemoteNotification(userInfo: userInfo as NSDictionary)

        } else {
            print("本地通知...")
        }

        let tempPresentationOptions = UNNotificationPresentationOptions.alert.rawValue |  UNNotificationPresentationOptions.sound.rawValue | UNNotificationPresentationOptions.badge.rawValue
        completionHandler(Int(tempPresentationOptions)) // 需要执行这个方法,选择是否提醒用户,有Badge、Sound、Alert三种类型可以选择设置
    }

自定义方法,用于吸收接纳远程文告后的一部分拍卖操作,例如取值以至页面包车型客车跳转等等

func handleTheRemoteNotification(userInfo: NSDictionary) {

        let aps = userInfo["aps"] as? NSDictionary // 取得 APNs 标准信息内容
        let content = aps?["alert"] as? String ?? "" // 推送显示的内容
        let customizeField = aps?["customizeExtras"] as? String ?? "" // 服务端中Extras字段,key是自己定义的

        let ctrlAlert = UIAlertController(title: "提醒", message: content, preferredStyle: UIAlertControllerStyle.alert)

        let confirmAction = UIAlertAction(title: "确定", style: .default){ (action) in
            UIApplication.shared.applicationIconBadgeNumber -= 1
            // 所需业务逻辑处理。。。
        }
        let cancelAction =  UIAlertAction(title: "取消", style: .default) { (action) in
            UIApplication.shared.applicationIconBadgeNumber -= 1
            // 不作处理
        }

        ctrlAlert.addAction(cancelAction)
        ctrlAlert.addAction(confirmAction)

        let rootVC = UIApplication.shared.keyWindow?.rootViewController
}

3.SDK表达了该自定义消息推送不通过APNS。

当应用软件已经处在前台并吸收接纳到推送,大概APP不在前台时,选用到推送会有通告栏提醒,此时点击文告栏唤醒应用软件,都会调用以下方法:

图片 2

布告(本地推送)

对此某些业务供给,比如闹铃恐怕日历的一对提醒事件等,本身推送消息,完结推送布告的效劳。

func pushLocalNotification() {

        let notification = UILocalNotification()
        if #available(iOS 8.2, *) {
            notification.alertTitle = "小蜗牛"
        } else {
            // Fallback on earlier versions
        }
        notification.alertBody = "快来玩啊~"
        notification.userInfo = ["name": "Tony", "gender": "man"]
        UIApplication.shared.presentLocalNotificationNow(notification)
    }

假使大家不经常间的话去用下极光的自定义新闻推送;完美的湮灭了好几app不想在未运营时收到推送新闻的标题

- application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(UIBackgroundFetchResult))completionHandler { // 取得 APNs 标准信息内容 NSDictionary *aps = [userInfo valueForKey:@"aps"]; NSString *content = [aps valueForKey:@"alert"]; // 推送显示的内容 NSInteger badge = [[aps valueForKey:@"badge"] integerValue]; // badge数量 NSString *sound = [aps valueForKey:@"sound"]; // 播放的声音 // 取得Extras字段内容 NSString *customizeField1 = [userInfo valueForKey:@"customizeExtras"]; // 服务端中Extras字段,key是自己定义的 NSLog(@"nAppDelegate:ncontent =[%@], badge=[%ld], sound=[%@], customize field =[%@]",content,badge,sound,customizeField1); // Required [JPUSHService handleRemoteNotification:userInfo]; completionHandler(UIBackgroundFetchResultNewData);}

其次种,第一种并从未配备,结果一切配置好之后,音信提醒发送成功。不过推送记录中

自定义新闻

作用表明:独有在前面八个运转的时候才具吸收接纳自定义新闻的推送。
从jpush服务器获取客户推送的自定义音信内容和标题以致附加字段等。
这一个剧情是和后台的同桌们说道好的,并且由他们来写好向极光推送的相应服务。

获取iOS的推送内容要求在appDelegate类中注册通告并促成回调方法。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

        // 极光推送,接收自定义消息
        let defaultCenter = NotificationCenter.default
        defaultCenter.addObserver(self, selector: #selector(networkDidReceiveMessage(notification:)), name: NSNotification.Name.jpfNetworkDidReceiveMessage, object: nil)

        return true
    }

回调方法

// 接收自定义消息
    func networkDidReceiveMessage(notification:NSNotification) {

        let userInfo: NSDictionary = notification.userInfo! as NSDictionary
        print("自定义消息---",userInfo)

        // 业务逻辑处理。。。
    }

此处的Extras字段是极光推送调整台举行推送时设置的,为了越来越直观请遍历userInfo.allKeys并打字与印刷。

图片 3

标签与别称

别名 alias

为设置了应用程序的客户,取个小名来标记。以后给该客商 Push 音信时,就可以用别的号来钦赐。
每种客商只好内定八个别称。
同三个应用程序内,对两样的客户,建议取分裂的外号。那样,尽或然依照外号来独一分明用户。
系统不限量二个外号只好钦定一个客户。要是多个别称被内定到了四个顾客,当给钦定那几个外号发音信时,服务器端API会同一时候给那多少个顾客发送音讯。
比喻:在一个客商要登入的游玩中,恐怕安装别称称叫userid。游戏运转时,发掘该客户 3 天未有玩游戏了,则依照 userid 调用服务器端API发公告到顾客端提示客户。

标签 tag

为设置了应用程序的客户,打上标签。其目标根本是便利开发者依据标签,来批量颁发 Push 新闻。
可为各个顾客打三个标签。
举例: game, old_page, women

外号与标签的安装
因为小名和标签能够另行设置,所以作者把它座落了登入方法中。

func login() {
  //极光推送 注册别名
  let alias = String(format: "%d", userId)
  JPUSHService.setTags(["lowbeer","doubeer"], aliasInbackground: alias)
}

接下来在退出登入时注销外号和标签,幸免在多个设备上登陆后,通过小名发送文告时,多少个器具都会选拔的境况。

// 退出登录
func logout() {
  // 注销推送别名和标签
  JPUSHService.setTags([], aliasInbackground: "")
}

参数表明

alias
  • nil 此番调用不设置此值。
  • 空字符串 ("")表示撤废早前的安装。
  • 老是调用设置有效的外号,覆盖早先的装置。
  • 可行的别称组成:字母(区分轻重缓急写)、数字、下划线、汉字,特殊- 字符(v2.1.9支撑卡塔尔@!#$&* =.|。
  • 节制:alias 命名长度限定为 40 字节。(判别长度需选用UTF-8编码)
tags
  • nil 此番调用不安装此值。
  • 空集合([NSSet set])表示撤废此前的安装。
  • 聚拢成员类型要求为String类型
  • 老是调用最少设置三个 tag,覆盖在此以前的安装,不是新添。
  • 可行的标签组成:字母(区分朗朗上口写)、数字、下划线、汉字,特殊字符(v2.1.9支撑卡塔尔国@!#$&* =.|。
  • 范围:每一种 tag 命名长度限定为 40 字节,最多支持设置 1000 个 tag,但总参谋长度不得胜过7K字节。(推断长度需利用UTF-8编码)
    单个设备最多帮助设置 1000 个 tag。App 全局 tag 数量无界定。

本文由澳门新葡亰发布于计算机知识,转载请注明出处:极光推送自定义消息和推送的区别,极光推送

关键词: 日记本 随笔 自定义 极光 消息

上一篇:Xcode打包和生成ipa文件

下一篇:没有了

最火资讯