iOS集成友盟推送
之前有写过利用Python自己写一个推送服务器, 今天说下如果集成友盟的推送服务
在这之前我们需要做一些准备动作
#1. 注册一个App ID
#2. Enable Push NotificationSerivice, 并创建和下载开发/发布推送证书
#3. 安装推送证书, 然后把推送证书导出为p12文件
#4. 注册友盟账号
#5. 创建一个推送应用, 并上传推送证书的p12文件和填写密码
#6. 下载SDK, 添加到项目中
在AppDelegatez
- #import "UMessage.h"
添加一个属性
- @property (nonatomic, strong) NSDictionary *userInfo;
添加协议:
- @interface AppDelegate ()<UNUserNotificationCenterDelegate>
设置友盟AppKey
- static NSString *UMessageAppKey = @"";
创建一个配置友盟推送的方法
- - (void)configureUMessageWithLaunchOptions:(NSDictionary *)launchOptions {
- //设置AppKey & LaunchOptions
- [UMessage startWithAppkey:UMessageAppKey launchOptions:launchOptions];
- //初始化
- [UMessage registerForRemoteNotifications];
- //开启log
- [UMessage setLogEnabled:YES];
- //检查是否为iOS 10以上版本
- if ([[[UIDevice currentDevice] systemVersion] floatValue] < 10.0) {
- } else {
- //如果是iOS 10以上版本则必须执行以下操作
- UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
- center.delegate = self;
- UNAuthorizationOptions types10 = \
- UNAuthorizationOptionBadge | UNAuthorizationOptionAlert |UNAuthorizationOptionSound;
- [center requestAuthorizationWithOptions:types10
- completionHandler:^(BOOL granted, NSError * _Nullable error) {
- if (granted) {
- //点击允许
- //这里可以添加一些自己的逻辑
- } else {
- //点击不允许
- //这里可以添加一些自己的逻辑
- }
- }];
- }
- }
协议方法:
- - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
- //关闭友盟自带的弹出框
- [UMessage setAutoAlert:NO];
- [UMessage didReceiveRemoteNotification:userInfo];
- self.userInfo = userInfo;
- //定制自定的的弹出框
- if([UIApplication sharedApplication].applicationState == UIApplicationStateActive)
- {
- UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"温馨提示"
- message:self.userInfo[@"aps"][@"alert"]
- delegate:self
- cancelButtonTitle:@"确定"
- otherButtonTitles:nil];
- [alertView show];
- }
- }
- //iOS10新增:处理前台收到通知的代理方法
- - (void)userNotificationCenter:(UNUserNotificationCenter *)center
- willPresentNotification:(UNNotification *)notification
- withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler{
- NSDictionary * userInfo = notification.request.content.userInfo;
- if([notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
- //应用处于前台时的远程推送接受
- //关闭友盟自带的弹出框
- [UMessage setAutoAlert:NO];
- //必须加这句代码
- [UMessage didReceiveRemoteNotification:userInfo];
- }else{
- //应用处于前台时的本地推送接受
- }
- //当应用处于前台时提示设置,需要哪个可以设置哪一个
- completionHandler(UNNotificationPresentationOptionSound |
- UNNotificationPresentationOptionBadge |
- UNNotificationPresentationOptionAlert);
- }
- //iOS10新增:处理后台点击通知的代理方法
- -(void)userNotificationCenter:(UNUserNotificationCenter *)center
- didReceiveNotificationResponse:(UNNotificationResponse *)response
- withCompletionHandler:(void (^)())completionHandler{
- NSDictionary * userInfo = response.notification.request.content.userInfo;
- if([response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
- //应用处于后台时的远程推送接受
- //必须加这句代码
- [UMessage didReceiveRemoteNotification:userInfo];
- }else{
- //应用处于后台时的本地推送接受
- }
- }
- - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
- [UMessage sendClickReportForRemoteNotification:self.userInfo];
- }
最后是在ApplicationDidFinishLaunch中调用配置友盟推送的方法即可
- - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
- //配置友盟推送
- [self configureUMessageWithLaunchOptions:launchOptions];
- return YES;
- }
iOS集成友盟推送的更多相关文章
- iOS app 集成友盟推送问题
之前做app推送主要是集成友盟SDK,在程序获取deviceToken时,老是提示如下错误: Error Domain=NSCocoaErrorDomain Code=3000 "未找到应用 ...
- java 集成友盟推送
原文:https://blog.csdn.net/Athena072213/article/details/83414743 最近应公司业务需求需要完善友盟推送,认真看了官方文档后其实很简单,只需要细 ...
- AppDelegate减负之常用三方封装 - 友盟推送篇
之前分享过集成友盟推送的方法, 需要的朋友可以查看一下链接: http://www.cnblogs.com/zhouxihi/p/6533058.html 一般开发中我们比较多使用的三方有友盟推送, ...
- 使用极光/友盟推送,APP进程杀死后为什么收不到推送(转)
为什么会存在这样的 问题,刚开始的时候我也搞不清楚,之前用极光的时候杀死程序后也会收到推送,但最近重新再去集成时就完全不好使了,这我就纳闷了,虽然Google在高版本上的android上面不建议线程守 ...
- 极光推送和友盟推送,ios端和安卓端的后端调试设置
我是最后端的,这两天搞了一个app项目,前端安卓使用友盟很方便,调试比较顺利,然后ios就遇到各种问题了,证书.发送成功推送不成功,测试时用的TestMode(),ios上架之后就必须用product ...
- iOS 友盟推送,应用内推送启动图推送闪动黑屏,插屏推送方法报错
以前都是用的极光推送,应公司需求要求使用友盟推送,为了以后是有分享都适用,,, 友盟推送文档,下载demo 感觉比极光用着要简单顺手 一切就绪后,开始发送消息测试,,,,,搞了半天没有发过来消息 原来 ...
- 友盟推送里面的Alias怎么用?可以理解成账号吗?
友盟推送里面的Alias怎么用?可以理解成账号吗? 我们的App有自己的账号体系的,想在每次用户登陆的时候,给用户发一个欢迎消息. 看了一下友盟推送,里面有一个概念叫做Alias(别名),但是官方文档 ...
- 友盟推送SDK集成测试、常见问题以及注意事项总结
最近为了解决公司APP在一些手机出现的推送问题重新集成了最新版的友盟推送SDK,花费了几天时间终于把集成和测试工作完成,最终在华为,Nexus,三星,小米,HTC,魅族等10多部手机上测试并达到了预想 ...
- PHP友盟推送消息踩坑及处理
公司的客户端的推送选用友盟推送,但是友盟的官方文档描述很少,对新手很不友好,所以特写此采坑纪录,废话不多说上代码. 公司业务只涉及单播和广播.所以只提供了单播和广播,业务拓展的话会补充其余部分. 消息 ...
随机推荐
- Cracking the code interview
推荐一本书<Cracking the code interview> Now in the 5th edition, Cracking the Coding Interview gives ...
- WInform 创建一个简单的WPF应用
(一)创建一个简单的WPF应用 首先,在这里我要说明的是:这里的例子,都是通过控制台程序来创建WPF应用,而非使用现成的WPF模版.因为WPF模版封装了创建WPF应用所需要的各种基本元素,并不利于我们 ...
- 对于python的__name__="__main__"的含义的理解
学习python的时候经常会看到python 中__name__ = \'__main__\' 这样的代码,可能很多新手一开始学习的时候都比较疑惑,python 中__name__ = '__main ...
- Redis系列三(redis配置文件分析)
在第一篇文章中有提到过redis.conf这个文件,这个文件就是redis-server的具体配置了.要使用好redis,一定要搞清楚redis的配置文件,这样才能最大的发挥redis的性能. # B ...
- arm交叉编译器科普
交叉编译工具链的命名规则为:arch [-vendor] [-os] [-(gnu)eabi] arch - 体系架构,如ARM,MIPS vendor - 工具链提供商 os - 目标操作系统 ea ...
- python 基础学习小记
Python应该是写起来最舒服的动态语言了,一下是一些读书笔记,本文中安装的是3.0,有几点需要注意: print "xxx" 要换成 print("xxx") ...
- Quartz_理解2
一.核心概念 Quartz的原理不是很复杂,只要搞明白几个概念,然后知道如何去启动和关闭一个调度程序即可. 1.Job 表示一个工作,要执行的具体内容.此接口中只有一个方法 void exec ...
- 获取SQL中某一列的类型及精度
SELECT @type=t.name, @prec=c.prec FROM sysobjects o JOIN syscolumns c on o.id=c.id JOI ...
- 浅谈时间复杂度- 算法衡量标准Big O
写在前面: 今天有一场考试,考到了Big-O的知识点,考到了一道原题,原题的答案我记住了,但实际题目有一些改动导致答案有所改动,为此作者决定重新整理一下复杂度相关知识点 Efficiency and ...
- python中文编码问题深入分析(一):字符编码基础
背景:笔者作为一名刚接触python语言的新手,在实际的项目中,遇到过一些中文编码问题,初次遇到这些问题的时候,刚开始显得有些手足无措,也不知从何查起.常言道:有问题,找度娘!当我打开www.baid ...