友盟+搜索

{{errorMsg}}

iOS 消息推送 (Message) SDK使用指南

本文档包括:

  1. 介绍
  2. 基本功能集成指南
  3. 高级功能集成指南
  4. 测试与调试
  5. 技术支持

 介绍

友盟消息推送组件帮助您实时的推送消息给用户。

下载的压缩包中将包括以下内容:

文件名称 介绍
UMessage_Sdk_Introductions.html 该文件介绍如何使用友盟消息推送SDK
UMessage_Sdk_ReleaseNotes.html 该文件记录了友盟消息推送SDK的更新日志
UMessage_Sdk_Api_Reference/ 该文件夹中包含了友盟消息推送的API文档
UMessage_Sdk_x.x.x/ 该文件夹中包含了SDK的库文件
UMessage_Sdk_Demo/ 该文件夹中包含了示例工程

集成之前, 请在友盟推送后台申请开通友盟消息推送服务。

 基本功能集成指南

提示
请先在友盟的消息推送管理后台中创建App,获得AppKey和AppSecret

  • 导入SDK

    • 下载 UMessage_Sdk_All_x.x.x.zip并解压缩
    • 导入插件

    所需SDK文件夹:UMessage_Sdk_x.x.x
    请在你的工程目录结构中,右键选择Add->Existing Files…,选择这个文件夹。或者将这个文件夹拖入XCode工程目录结构中,在弹出的界面中勾选Copy items into destination group's folder(if needed), 并确保Add To Targets勾选相应的target。

  • 配置(可选)

    • SDK采用ARC管理内存,非ARC项目也是默认支持,如遇问题,请联系我们
    • 如果您使用了-all_load,可能需要添加libz的库:
      TARGETS-->Build Phases-->Link Binary With Libraries--> + -->libz.dylib

    说明
    SDK支持iOS 4.3+

  • 添加代码
    打开*AppDelegate.m,依次按照以下步骤集成:

    • didFinishLaunchingWithOptions中的设置:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    //set AppKey and AppSecret
    [UMessage startWithAppkey:@"your appkey" launchOptions:launchOptions];

    #if __IPHONE_OS_VERSION_MAX_ALLOWED >= _IPHONE80_
if(UMSYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0"))
{
//register remoteNotification types (iOS 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;//当点击的时候不启动程序,在后台处理
action2.authenticationRequired = YES;//需要解锁才能处理,如果action.activationMode = UIUserNotificationActivationModeForeground;则这个属性被忽略;
action2.destructive = YES;

UIMutableUserNotificationCategory *categorys = [[UIMutableUserNotificationCategory alloc] init];
categorys.identifier = @"category1";//这组动作的唯一标示
[categorys setActions:@[action1,action2] forContext:(UIUserNotificationActionContextDefault)];

UIUserNotificationSettings *userSettings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge|UIUserNotificationTypeSound|UIUserNotificationTypeAlert
categories:[NSSet setWithObject:categorys]];
[UMessage registerRemoteNotificationAndUserNotificationSettings:userSettings];

} 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];

return YES;
}
  • didRegisterForRemoteNotificationsWithDeviceToken中设置
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
    [UMessage registerDeviceToken:deviceToken];   
}

  • didReceiveRemoteNotification中设置
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    [UMessage didReceiveRemoteNotification:userInfo];
}

说明
如需关闭推送,请使用[UMessage unregisterForRemoteNotifications]

至此,消息推送基本功能的集成已经完成。

 高级功能集成指南

使用标签

  • 添加tag

示例:将标签“男”绑定至该设备:

[UMessage addTag:@"男"
            response:^(id responseObject, NSInteger remain, NSError *error) {
         //add your codes
  }];

小提示:tag参数既可以是NSString的单个tag,也可以是NSArray,NSSet的tag集合哦!

  • 删除tag:

示例:将标签"男"从设备绑定中删除:

[UMessage removeTag:@"男"
           response:^(id responseObject, NSInteger remain, NSError *error) {
         //add your codes            
  }];

小提示:tag参数既可以是NSString的单个tag,也可以是NSArray,NSSet的tag集合哦!

  • 获取tag列表

示例: 获取tag列表

[UMessage getTags:^(NSSet *responseTags, NSInteger remain, NSError *error) {
        //add your codes
  }];

  • 重置tag列表

示例: 重置tag列表

[UMessage removeAllTags:^(id responseObject, NSInteger remain, NSError *error) {

  }];

注意
1. 可以为单个tag(NSString)也可以为tag集合(NSArray、NSSet)
2. 每台设备最多绑定64个tag,超过64个,绑定tag不再成功
3. 单个tag最大允许长度50字节,编码UTF-8,超过长度自动截取

使用别名

当需要将设备标记为别名时,可用。

  • 添加别名(addAlias)

示例: 将新浪微博的某用户绑定至设备,老的绑定的设备还在

[UMessage addAlias:@"test@test.com" type:kUMessageAliasTypeSina response:^(id responseObject, NSError *error) {
    }];

注意:
1. type的类型已经默认枚举好平台类型,在UMessage.h最上侧,形如:kUMessageAliasTypeSina

2. type的类型如果默认的满足不了需求,可以自定义这个字段

  • 设置别名(setAlias)

示例: 将新浪微博的某用户绑定至设备,覆盖老的,一一对应

[UMessage setAlias:@"test@test.com" type:kUMessageAliasTypeSina response:^(id responseObject, NSError *error) {
    }];

  • 删除别名(removeAlias)

示例: 将新浪微博的别名绑定删除

[UMessage removeAlias:@"test@test.com" type:kUMessageAliasTypeSina response:^(id responseObject, NSError *error) {
    }];

其他设置

  • 设置地理位置信息

    [UMessage setLocation:location];
    
    
  • 设置是否允许SDK自动清空角标(默认开启)

    [UMessage setBadgeClear:NO];
    
    
  • 设置是否允许SDK当应用在前台运行收到Push时弹出Alert框(默认开启)

    [UMessage setAutoAlert:NO];
    
    
  • 设置当前 App 的发布渠道(默认"App Store")

    [UMessage setChannel:@"App Store"]
    
    
  • 自定义弹出框后,想补发前台的消息的点击统计

    [UMessage sendClickReportForRemoteNotification:userInfo]
    
    

 测试与调试

 开启调试模式

  • 打开调试日志 [UMessage setLogEnabled:YES];

 调试步骤

  1. 确认证书设置正确。参见 iOS 证书设置指南
  2. 确认Provisioning Profile配置正确,并已更新
  3. 在友盟消息推送后台上传正确的 Push 证书
  4. 启动应用程序,并在选择接受推送通知
  5. 确认 App 是开启 Push 权限的
  6. 在网站后台选择对应的Device Token进行推送测试

 如何获取设备的 DeviceToken

开发环境下:

方法1:在 didRegisterForRemoteNotificationsWithDeviceToken 中添加如下语句

NSLog(@"%@",[[[[deviceToken description] stringByReplacingOccurrencesOfString: @"<" withString: @""]
                  stringByReplacingOccurrencesOfString: @">" withString: @""]
                 stringByReplacingOccurrencesOfString: @" " withString: @""]);

方法2:在 didFinishLaunchingWithOptions:(NSDictionary *)launchOptions中 开启UMessage的Log,然后寻找deviceToken的字段

  //for log
  [UMessage setLogEnabled:YES];

以上任一方式都可在控制台获取一个长度为64的测试设备的DeviceToken串

生产环境下,用户需要用抓包工具、代理工具等自行获取device_token

 集成帮助

常见问题

一、IOS为什么获取不到设备的DeviceToken查看帮助

二、IOS可以自定义App在前台接受到消息的弹出框么查看帮助

三、为什么集成完SDK后,App运行没有弹出打开通知的对话框查看帮助

四、为什么集成成功后iOS收不到推送通知查看帮助

更多常见问题请点击访问:友盟消息推送常见问题索引

技术支持

如果还有问题,请把您的问题发邮件至msg-support@umeng.com或者联系客服:联系客服 (在线时间:工作日10:00~18:00),以及消息推送交流QQ群:315409329(需提供友盟appkey)。

如果可以附上相关日志,我们可以更好的帮助您解决问题,通过[UMessage setLogEnabled:YES];打开Debug模式,在logcat里查看log,发布应用时请去掉。