友盟消息推送SDK集成
2016-04-09 09:52
288 查看
1.创建应用
在友盟有账号的情况下(没有的请自行创建),创建应用之前需要去苹果开发者网站申请一个App ID和配置一个用于推送的APNs证书,下载并安装APNs推送证书后,打开钥匙串从这个证书导出一个.P12的证书文件并保存下来用于创建应用。对APNs证书不了解的可以参考宏创学院提供的证书设置指南:证书配置 友盟官网
首先在友盟消息推送功能中创建一个应用,上传我们的证书:
创建好应用后进入应用详情页面,点击应用信息,可以看到我们的AppKey和App Master Secret,证书也可以在这里进行修改。
2.下载iOS SDK
友盟iOSSDK文档
选择合适版本的SDK,下载下来之后解压压缩包,找到UMessage_Sdk_1.2.3(1.2.3为版本号,本文以1.2.3示例) 文件夹,里面就是我们需要的文件了(一个.a的库文件,一个.h头文件)。
3.SDK基本功能集成
将上述的UMessage_Sdk_1.2.3文件夹拖入工程,若工程的Other Linker Flag中设置了-all_load,则需要添加libz.dylib(iOS 9为lib.tbd)库在AppDelegate类中引入头文件Message.h,在AppDelegate.m的application:didFinishLaunchingWithOptions方法中初始化并注册友盟推送
//初始化友盟推送
[UMessage startWithAppkey:@"568cd65be0f55ac5610017ea" launchOptions:launchOptions];
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_8_0
//iOS 8之后使用此种方法注册
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {
//远程消息注册类型
UIMutableUserNotificationAction *action1 = [[UIMutableUserNotificationAction alloc] init];
action1.identifier = @"action1_identifier";
action1.title=@"Accept";
action1.activationMode = UIUserNotificationActivationModeForeground;// 当点击的时候启动程序
// 第二按钮
UIMutableUserNotificationAction *action2 = [[UIMutableUserNotificationAction alloc] init];
action2.identifier = @"action2_identifier";
action2.title = @"Reject";
// 当点击的时候不启动程序,在后台处理
action2.activationMode = UIUserNotificationActivationModeBackground;
// 需要解锁才能处理,如果action.activationMode = UIUserNotificationActivationModeForeground;则下面这个属性被忽略
action2.authenticationRequired = YES;
action2.destructive = YES;
UIMutableUserNotificationCategory *categorys = [[UIMutableUserNotificationCategory alloc] init];
// 这组动作的唯一标示
categorys.identifier = @"category1";
[categorys setActions:@[action1,action2] forContext:(UIUserNotificationActionContextDefault)];
UIUserNotificationType types = UIUserNotificationTypeBadge
| UIUserNotificationTypeSound
| UIUserNotificationTypeAlert;
UIUserNotificationSettings *userSettings = [UIUserNotificationSettings settingsForTypes:types
categories:[NSSet setWithObject:categorys]];
[UMessage registerRemoteNotificationAndUserNotificationSettings:userSettings];
} else {
// 远程消息注册类型
UIRemoteNotificationType types = UIRemoteNotificationTypeBadge
| UIRemoteNotificationTypeSound
| UIRemoteNotificationTypeAlert;
[UMessage registerForRemoteNotificationTypes:types];
}
#else
// iOS8.0之前使用此注册
// 远程消息注册类型
UIRemoteNotificationType types = UIRemoteNotificationTypeBadge
| UIRemoteNotificationTypeSound
| UIRemoteNotificationTypeAlert;
[UMessage registerForRemoteNotificationTypes:types];
#endif
//打开调试日志
[UMessage setLogEnabled:YES];
//不自动清空角标
[UMessage setBadgeClear:NO];
//app发送渠道,默认为APP Store
[UMessage setChannel:nil];
消息处理方法
//向友盟注册deviceToken
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
//打印deviceToken
NSLog(@"%@",[[[[deviceToken description] stringByReplacingOccurrencesOfString: @"<" withString: @""] stringByReplacingOccurrencesOfString: @">" withString: @""]
stringByReplacingOccurrencesOfString: @" " withString: @""]);
//注册deviceToken
[UMessage registerDeviceToken:deviceToken];
}
//注册远程通知失败
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
NSLog(@"注册推送失败,具体错误:%@", error);
}
//收到推送消息时调用
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
[UMessage didReceiveRemoteNotification:userInfo];
}
如果需要关闭推送,使用[UMessage unregisterForRemoteNotifications]
4.测试与调试
由于使用的是开发环境,所以推送的时候,需要在友盟注册的应用中添加一个测试设备用来测试。将前面的代码集成到项目里以后,使用真机运行项目,提示注册成功后可以在debug信息中看到获取的DeviceToken,将DeviceToken拷贝下来备用。得到DeviceToken后进入友盟网站,依次执行下面的操作:
消息推送->立即使用->(你的应用)->开发环境->测试设备->添加测试设备
设备添加完成后就可以进行推送调试了,在测试消息中点击新建测试消息:
参数和提醒方式自行设置,发送方式选择单播,输入设备的DeviceToken,完成后提交即可:
确认后等待推送消息发送即可
至此,消息推送功能基本完成,更多功能请移步友盟iOS SDK集成指南。
相关文章推荐
- Linux 自检和 SystemTap
- Android ADT 23.0.0无法更新到23.0.2问题解决方案
- Python 七步捉虫法
- 苹果与Siri的七年之痒:“宫斗”戏码不断上演
- SDKMAN:轻松管理多个软件开发套件 (SDK) 的命令行工具
- 央视新闻报道XcodeGhost事件
- 路由器的配置与调试
- 对于技术人员的出现了运行时间错误,是否要进行调试的解决方法
- 原生JS仿苹果任务栏菜单,放大效果的菜单
- Parse正式发布开源PHP SDK
- 讲解WordPress开发中一些常用的debug技巧
- JavaScript程序设计之JS调试
- 可以用来调试JavaScript错误的解决方案
- 如何调试异步加载页面里包含的js文件
- jQuery下的Ajax调试步骤
- 调试一段PHP程序时遇到的三个问题
- JavaScript高级程序设计 错误处理与调试学习笔记
- Javascript调试脚本的经验之谈第1/2页
- 在IE,Firefox,Safari,Chrome,Opera浏览器上调试javascript
- 基于Android SDK-在64位Linux中使用需要注意的问题