swift 集成极光推送

在极光官网下申请程序。

image.png

进行证书配置,证书分开发证书,跟生产证书。用xcode跑到手机上的项目需要开发证书,打包上架的需要生产证书,这个就不多说了相信大家都可以实现。(哎,还是给大家甩个链接吧,谁让我是负责任的人那)https://www.jianshu.com/p/e62810d13df9

image.png

cocopoapods集成JPush (没用coco 的小伙伴我就不说了,在我们公司就被乱刀砍死了,赶紧安cocoapods去吧,还愣着干什么)

在你的Podfile文件下添加

pod 'JPush'#极光推送

终端中敲下

 pod install --no-repo-update

搞定,这个时候你的pods目录下应该多俩这个


image.png

因为这是oc 写的,但我们现在是在拿swift敲代码有木有,这个时候就需要一个叫桥接文件的东西来帮我们搭个桥了。


image.png

我的是之前建 好了,没有桥接文件的,你就去添加个oc 文件,系统自动就给你建好桥接文件了


image.png

好了,假装你的桥接文件也没有问题啊,桥接文件里写什么?给你们个可以复制粘贴的代码吧

#import "JPUSHService.h"
// iOS10注册APNs所需头文件
#ifdef NSFoundationVersionNumber_iOS_9_x_Max
#import <UserNotifications/UserNotifications.h>
#endif
// 如果需要使用 idfa 功能所需要引入的头文件(可选)
//#import <AdSupport/AdSupport.h>

哈哈废话一大堆,见谅见谅,就爱撤个犊子。好吧,下面儿是真正的开发代码了啊


appdelegate 里的 didFinishLaunchingWithOptions 方法里(不要试图用我的appKey了,我这么谨慎的人当然放的假的了,自己去极光官网上自己的项目里拿appKey 了)

        //推送代码
        let entity = JPUSHRegisterEntity()
        entity.types = 1 << 0 | 1 << 1 | 1 << 2
        JPUSHService.register(forRemoteNotificationConfig: entity, delegate: self)
        //需要IDFA 功能,定向投放广告功能
        //let advertisingId = ASIdentifierManager.shared().advertisingIdentifier.uuidString
        JPUSHService.setup(withOption: launchOptions, appKey: "7a84363c8be53oba2c8d1a72", channel: "App Store", apsForProduction: false, advertisingIdentifier: nil)

还支持iOS8.0之前的朋友,再去百度下8.0之前怎么写吧,我这不没适配8.0之前的(都iOS12了还支持8.0 之前的是不是傻,9.0之前的我都不想支持了)哈哈,好吧,主要小弟的项目小,不需要考虑那么多。

JPUSHRegisterDelegate 代理方法。什么?你问我这些代理方法干啥的。跟你有关系吗,复制粘贴就完了,这孩子,真的是事儿多(哎呀,吓死我了,没暴露我的水平吧。)

//MARK:--推送代理
extension AppDelegate : JPUSHRegisterDelegate {
    @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 is UNPushNotificationTrigger {
            JPUSHService.handleRemoteNotification(userInfo)
        }
       // 需要执行这个方法,选择是否提醒用户,有Badge、Sound、Alert三种类型可以选择设置
       completionHandler(Int(UNNotificationPresentationOptions.alert.rawValue))
    }
    
    @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 is UNPushNotificationTrigger {
            JPUSHService.handleRemoteNotification(userInfo)
        }
        // 系统要求执行这个方法
        completionHandler()
    }
    
    //点推送进来执行这个方法
    func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
           JPUSHService.handleRemoteNotification(userInfo)
           completionHandler(UIBackgroundFetchResult.newData)
        
    }
    //系统获取Token
    func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
        JPUSHService.registerDeviceToken(deviceToken)
    }
    //获取token 失败
    func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) { //可选
        print("did Fail To Register For Remote Notifications With Error: \(error)")
    }
}

推送小红角标,程序从后台进入前台的时候我们要消除它

    //后台进前台
    func applicationDidEnterBackground(_ application: UIApplication) {
        //销毁通知红点
        UIApplication.shared.applicationIconBadgeNumber = 0
        JPUSHService.setBadge(0)
        UIApplication.shared.cancelAllLocalNotifications()
    }

到这步就可以进行广播推送了。(傻瓜教程图片三连)

image.png

image.png
image.png

收到广播通知了吧,没收到你打死我。(开玩笑啊,实在收不到的话我就不知道咋搞了,您另请高明吧)


咳咳,下面说说个推吧。如果你是个没集成过极光的小白,请到极光文档下了解下“别名 alias” (标签tag 我就不说了啊,我这儿没用到)

简单的说,别名就是极光用来标识用户唯一性的东西。我这里用手机号做的别名,当然你也可以有uid ,sid 之类的有唯一性的东西来做别名,跟你们的后台大佬商量好就行了
上代码

  private func setJPushAlias () {
        let  alias : String = UserDefaults.standard.value(forKey: "phoneN") as! String
        JPUSHService.setAlias(alias, completion: { (iResCode, iAlias, seq) in
            print("alias,\(alias) . completion,\(iResCode),\(iAlias),\(seq)")
        }, seq: 0)
    }

setAlias 告诉极光你的用户别名,当然这是在登录成功时进行的了,那退出登录的时候那,当然要删除了,不然我都没登着账号了还给能给我发通知,你是不是找砍那

  JPUSHService.deleteAlias({ (iResCode, iAlias, seq) in
                    print("退出注销极光别名儿 \(iResCode),\(String(describing: iAlias)),\(seq)")
                }, seq: 0)

个推操作(就这张图吧,其他跟上面两张图内容一样)

image.png

最后说下,生产环境还是开发环境下的后台也要设定一下的,我这后台是PHP的,刚开始他说没有找到设定生产环境,开发环境的方法,当时我就不乐意了对吧。测试推不过来怎么也得有人背锅吧,这个时候你把这段代码甩给他

 //附加选项
        $data['options'] = array(
            "sendno"=>time(),
            "time_to_live"=>$m_time, //保存离线时间的秒数默认为一天
            "apns_production"=>false, //布尔类型   指定 APNS 通知发送环境:0开发环境,1生产环境。或者传递false和true
        );

好了,能力一般,水平有限。父老乡亲能容我,不使人间造孽。。。哎呀,走错片场了,溜了溜了

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 141,930评论 1 299
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 60,888评论 1 255
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 93,606评论 0 211
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 40,848评论 0 175
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 48,544评论 1 253
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 38,671评论 1 173
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 30,312评论 2 267
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,112评论 0 165
  • 想象着我的养父在大火中拼命挣扎,窒息,最后皮肤化为焦炭。我心中就已经是抑制不住地欢快,这就叫做以其人之道,还治其人...
    爱写小说的胖达阅读 28,899评论 6 229
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 32,451评论 0 213
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,221评论 2 213
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 30,541评论 1 225
  • 白月光回国,霸总把我这个替身辞退。还一脸阴沉的警告我。[不要出现在思思面前, 不然我有一百种方法让你生不如死。]我...
    爱写小说的胖达阅读 24,196评论 0 31
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,079评论 2 213
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 31,448评论 3 204
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,597评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 25,969评论 0 164
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 33,451评论 2 230
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 33,523评论 2 229

推荐阅读更多精彩内容