之前有写过利用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集成友盟推送的更多相关文章

  1. iOS app 集成友盟推送问题

    之前做app推送主要是集成友盟SDK,在程序获取deviceToken时,老是提示如下错误: Error Domain=NSCocoaErrorDomain Code=3000 "未找到应用 ...

  2. java 集成友盟推送

    原文:https://blog.csdn.net/Athena072213/article/details/83414743 最近应公司业务需求需要完善友盟推送,认真看了官方文档后其实很简单,只需要细 ...

  3. AppDelegate减负之常用三方封装 - 友盟推送篇

    之前分享过集成友盟推送的方法, 需要的朋友可以查看一下链接: http://www.cnblogs.com/zhouxihi/p/6533058.html 一般开发中我们比较多使用的三方有友盟推送, ...

  4. 使用极光/友盟推送,APP进程杀死后为什么收不到推送(转)

    为什么会存在这样的 问题,刚开始的时候我也搞不清楚,之前用极光的时候杀死程序后也会收到推送,但最近重新再去集成时就完全不好使了,这我就纳闷了,虽然Google在高版本上的android上面不建议线程守 ...

  5. 极光推送和友盟推送,ios端和安卓端的后端调试设置

    我是最后端的,这两天搞了一个app项目,前端安卓使用友盟很方便,调试比较顺利,然后ios就遇到各种问题了,证书.发送成功推送不成功,测试时用的TestMode(),ios上架之后就必须用product ...

  6. iOS 友盟推送,应用内推送启动图推送闪动黑屏,插屏推送方法报错

    以前都是用的极光推送,应公司需求要求使用友盟推送,为了以后是有分享都适用,,, 友盟推送文档,下载demo 感觉比极光用着要简单顺手 一切就绪后,开始发送消息测试,,,,,搞了半天没有发过来消息 原来 ...

  7. 友盟推送里面的Alias怎么用?可以理解成账号吗?

    友盟推送里面的Alias怎么用?可以理解成账号吗? 我们的App有自己的账号体系的,想在每次用户登陆的时候,给用户发一个欢迎消息. 看了一下友盟推送,里面有一个概念叫做Alias(别名),但是官方文档 ...

  8. 友盟推送SDK集成测试、常见问题以及注意事项总结

    最近为了解决公司APP在一些手机出现的推送问题重新集成了最新版的友盟推送SDK,花费了几天时间终于把集成和测试工作完成,最终在华为,Nexus,三星,小米,HTC,魅族等10多部手机上测试并达到了预想 ...

  9. PHP友盟推送消息踩坑及处理

    公司的客户端的推送选用友盟推送,但是友盟的官方文档描述很少,对新手很不友好,所以特写此采坑纪录,废话不多说上代码. 公司业务只涉及单播和广播.所以只提供了单播和广播,业务拓展的话会补充其余部分. 消息 ...

随机推荐

  1. php 分词

    发现了一个很好的分词类库phpanalysis2.0. 原文连接地址:http://www.phpbone.com/phpanalysis/         分 词系统简介:PHPAnalysis分词 ...

  2. redis 2 字符串 和 hash

    string是最简单的类型,一个key对应一个value,string类型是二进制安全的.redis的string可以包含任何数据,比如JPG图片或者序列化的对象 操作    set    设置key ...

  3. PosixIO

    1.打开文件 int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t m ...

  4. HTML5 简介、HTML5 浏览器支持

    HTML5是HTML最新的修订版本,2014年10月由万维网联盟(W3C)完成标准制定. HTML5的设计目的是为了在移动设备上支持多媒体. HTML5 简单易学. 什么是 HTML5? HTML5 ...

  5. jQuery event,冒泡,默认事件用法

    jQuery event,冒泡,默认事件用法 <%@ page language="java" import="java.util.*" pageEnco ...

  6. doubango(1)--从协议栈结构说起

    自顶向下与自底向上 软件设计的两种方法不过于自顶向下与自底向上. 对于自顶向下而言,先设计好用户接口,再往下延伸至各个功能块的具体实现.而对于自底向上而言,自然是有了设计好的各个功能代码块,再将这些功 ...

  7. Mangos笔记

    $lt.$lte.$gt.$gte和$ne $in.$nin.$or $mod.$not $exists 条件句式内层文档的键,修改器是外层文档的键,一个键可以有多个 条件,但是一个键不能对应多个更新 ...

  8. Log4j与common-logging联系与区别

    http://blog.csdn.net/courage89/article/details/29649801

  9. SimpleDateFormat解析的时候字符串过长问题

    竟然不会报错: try { SimpleDateFormat dateFormatFrom = new SimpleDateFormat("yyyyMMddHHmmss"); St ...

  10. Chrome 插件集锦

    原文出处:CN_Simo 子曾曰:"工欲善其事,必先利其器.居是邦也."--语出<论语·卫灵公>:其后一百多年,荀子也在其<劝学>中倡言道:"吾尝 ...