【iOS】集成友盟推送

作者: 濤子 | 来源:发表于2016-08-12 11:03 被阅读1967次

首先得注册友盟账号,添加应用,请自行解决。友盟+

1. 集成SDK

1.下载SDK -- UMessage_Sdk_All_x.x.x.zip并解压缩
2.导入所需文件夹 -- UMessage_Sdk_x.x.x

配置 : 如果您使用了-all_load,可能需要添加libz的库:
TARGETS-->Build Phases-->Link Binary With Libraries--> +
-->libz

2. 代码实现

#import "UMessage.h"

AppDelegate.m中

注册友盟推送

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[UMessage startWithAppkey:@"you app key" launchOptions:launchOptions];

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= _IPHONE80_
    if([[[UIDevice currentDevice] systemVersion] floatValue] >=  8.0 ){
        //register remoteNotification types (iOS 8.0及其以上版本)
        UIMutableUserNotificationAction *action1 = [[UIMutableUserNotificationAction alloc] init];
        action1.identifier = @"action1_identifier";
        action1.title=@"增加";
        action1.activationMode = UIUserNotificationActivationModeForeground;//当点击的时候启动程序
        
        UIMutableUserNotificationAction *action2 = [[UIMutableUserNotificationAction alloc] init];  //第二按钮
        action2.identifier = @"action2_identifier";
        action2.title=@"修改";
        action2.activationMode = UIUserNotificationActivationModeBackground;//当点击的时候不启动程序,在后台处理
        action2.authenticationRequired = YES;//需要解锁才能处理,如果action.activationMode = UIUserNotificationActivationModeForeground;则这个属性被忽略;
        action2.destructive = YES;
        
        UIMutableUserNotificationCategory *categorys = [[UIMutableUserNotificationCategory alloc] init];
        categorys.identifier = @"category1";//这组动作的唯一标示
        [categorys setActions:@[action1,action2] forContext:(UIUserNotificationActionContextDefault)];
        
        //调用U-Push的自定义注册方法
        NSSet *categories = [NSSet setWithObject:categorys];
        //如果默认使用角标,文字和声音全部打开,请用下面的方法
        [UMessage registerForRemoteNotifications:categories];
        
        //如果对角标,文字和声音的取舍,请用下面的方法
//        UIRemoteNotificationType types7 = UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeSound;
//        UIUserNotificationType types8 = UIUserNotificationTypeAlert|UIUserNotificationTypeSound|UIUserNotificationTypeBadge;
//        [UMessage registerForRemoteNotifications:categories withTypesForIos7:types7 withTypesForIos8:types8];
        
    } else{
        //register remoteNotification types (iOS 8.0以下)
        [UMessage registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge|
                                                     UIRemoteNotificationTypeSound|
                                                     UIRemoteNotificationTypeAlert];
    }
#else
    
    //register remoteNotification types (iOS 8.0以下)
    [UMessage registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge
     |UIRemoteNotificationTypeSound
     |UIRemoteNotificationTypeAlert];
    
#endif
    
    //for log
    [UMessage setLogEnabled:YES];
}

获取deviceToken

- (void)application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    
    // 1.2.7版本开始不需要用户再手动注册devicetoken,SDK会自动注册
    //[UMessage registerDeviceToken:deviceToken];
    NSString * token = [[[[deviceToken description]
                          stringByReplacingOccurrencesOfString: @"<" withString: @""]
                         stringByReplacingOccurrencesOfString: @">" withString: @""]
                        stringByReplacingOccurrencesOfString: @" " withString: @""];
    NSLog(@"deviceToken: %@",token);
}

处理推送过来的消息

#pragma mark - 推送过来的消息进行处理的方法

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {

    self.userInfo = userInfo;
    // 关闭友盟对话框
    [UMessage setAutoAlert:NO];
    
    // 也可以不交给友盟处理 自己处理消息【不要删除】
    [UMessage didReceiveRemoteNotification:userInfo];
    
    // app was already in the foreground
    if([UIApplication sharedApplication].applicationState == UIApplicationStateActive)
    {
        UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"中奖通知"
                                                         message:[[userInfo objectForKey:@"aps"] objectForKey:@"alert"]
                                                        delegate:self
                                               cancelButtonTitle:@"确定"
                                               otherButtonTitles:nil];
        [alert show];
    }    
    // userInfo是服务器发过来的消息字典集合
}

通知消息点击事件

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    
     // 统计消息点击事件
     [UMessage sendClickReportForRemoteNotification:self.userInfo];
}

JPush(极光推送)注册及正确的配置证书,参考这里iOS证书配置指南

相关文章

  • iOS 友盟推送--关键点/核心点

    |:-| totem iOS集成友盟推送 1.iOS集成“友盟推送”后,友盟服务响应的deviceToken = ...

  • 记录下接友盟ios的推送

    最近项目要接友盟的ios端推送,所以记录下坑点 1.参考的一些博主的步骤 1.玩 iOS 友盟推送 2.iOS集成...

  • swift2.0下集成友盟推送功能

    友盟IOS版本的推送之前是基于OBJC写的,友盟官方提供的API也是基于OBJC。而swift2.0下集成友盟推...

  • iOS集成友盟消息推送

    集成iOS友盟消息推送主要分为两步:1.iOS推送证书配置;2.U-PushSDK集成与配置。 写在前面 1.假设...

  • React Native 的友盟推送

    前言 友盟推送集成失败? 本文带你3分钟快速集成友盟推送~想详细了解友盟集成小伙伴, 可以参考我的往期文章:Rea...

  • IOS集成友盟推送

    一.证书: 1.先去苹果官网申请推送证书,安装到本地后 需要导出推送调试和发布P12到友盟后台 二.代码: - (...

  • 【iOS】集成友盟推送

    首先得注册友盟账号,添加应用,请自行解决。友盟+ 1. 集成SDK 1.下载SDK -- UMessage_Sdk...

  • android集成友盟推送实现离线在线推送及桌面图标角标设置

    本人亲测有效,有问题欢迎评论,互相学习 1、集成友盟推送—根据友盟文档集成即可实现在线推送 2、集成后想要实现点击...

  • 极光推送小结 - iOS

    此次即友盟分享小结(友盟分享小结 - iOS)之后对推送也进行了一版优化.此次分享内容依然基于已经成功集成 SDK...

  • iOS开发 - 友盟推送

    在iOS 开发中项目会集成推送功能, 推送的三方很多,如友盟,极光推送.他们的推送原理大致差不多,文档也写的很详细...

网友评论

    本文标题:【iOS】集成友盟推送

    本文链接:https://www.haomeiwen.com/subject/bwcdsttx.html