3、多厂商推送通道集成具体实现3.1,因为IOS暂时无法完全避免接受不到通知这个揪心的问题

摘要腾讯移动推送(信鸽)正式推出多厂商通道的一体式推送方案,号称Android首家实现统一推送服务的云厂商。1、前言关于国内安卓推送环境,作为开发者深受其苦:厂商通道各自为战,第三方通道互保策略共存,导致开发者对推送效果不满、手机用户对推送服务不满、厂商对多通道策略不满,造成了混乱的市场现状。腾讯移动推送(信鸽)作为统一推送联盟副理事长,在推动统一推送标准的建立与落实中,腾讯信鸽提出多厂商通道一体化的集成式推送解决方案,为整合推送环境、统一推送规范迈出了实验性的一步。2、多厂商推送通道集成原理在信鸽一期的多厂商通道集成能力中,信鸽开放了对小米、华为、魅族等厂商的通道集成能力,后续也会持续优化和扩充。在集成版本的SDK中,信鸽可以实现:1)根据用户的设备品牌信息,自动选择使用对应厂商的推送通道;2)一次推送自动分发至多个厂商通道,并提供统一的管理台查看推送数据;3)开发者可以通过勾选打开/关闭分通道推送的能力,来选择是否调用该功能。现有的推送流程如下:3、多厂商推送通道集成具体实现3.1
统一账号系统每个PUSH SDK
都会生成一个唯一标识的字符串来标识集成了其SDK的设备,用于PUSH后台来标识终端设备,统一称之为TOKEN。由于集成了多方厂商PUSH
SDK,
每个厂商都会有就自己的账号Token体系,所以信鸽需要有一套统一的账号体系将各个厂商的账号体系关联起来。业务消息来时,会先调用信鸽Token,检查该Token是否有后台绑定关系的其他厂商通道注册Token。统一账号体系的流程如下:1)信鸽PUSH
SDK 从后台获取本设备的唯一标识TOKEN,
其生成主要是依据设备的设备ID,应用的包名等信息计算得到;2)根据用户设备的调用机型,调用对应的第三方PUSH
SDK相应中的注册API,获得厂商通道的设备TOKEN;3)将信鸽PUSH
TOKEN跟第三方PUSH TOKEN进行帐号关联。3.2
通道选择当有业务消息推送到信鸽PUSH后台时,信鸽会进行任务的拆解下发。根据后台Token的记录,如果有对应的厂商Token,优先推送厂商通道,否则推送信鸽通道。通道选择原则:1)优先选择厂商PUSH通道;2)厂商通道注册失败时,选择信鸽通道。

图片 1

用友推送:app.yonyou.com/dev/push.html

         进入后点击页面左下角的 +增加新应用

图片 2

打开量

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
   //asdf;lajksdfl;asdfl;


     /*友盟推送*/
    [UMessage startWithAppkey:@"568f2ccbe0f55a3e05?" launchOptions:launchOptions];

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= _IPHONE80_
    if(UMSYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"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];
    }

图片 3

图片 4

isProduction:如果测试填写0如果上线填写1。

Action执行率

 

Foundation.framework

耗电量

图片 5

流程图:

历史消息到达时间分布

  图片 6

4.推送对象,上文已有介绍,根据设置的标识,别名或者设备编号,发送对应消息。

差异化服务(支持、不支持)

   
 图片 7

极光推送暂时在此停笔了,如果文中有哪些不懂或者有误,欢迎指正,也可添加QQ群126440594进行讨论。

可推送的数据格式

 - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
    //下面这个token是将获取的nsdata转换成String,应为指定推送时我们需要将这个传给服务端。
    NSString *token=[NSString stringWithFormat:@"%@",[[[[deviceToken description] stringByReplacingOccurrencesOfString: @"<" withString: @""]                  stringByReplacingOccurrencesOfString: @">" withString: @""]                 stringByReplacingOccurrencesOfString: @" " withString: @""]];
    //注册token
    [UMessage registerDeviceToken:deviceToken];
}

CoreGraphics.framework

支持平台

   
 进入创建应用界面,创建应用,这里由于我是演示给各位看,所以随便填的。

CFNetwork.framework

增量更新(支持、不支持)

 

6) 如果通知发送失败,会调用这个方法

推送频率

   
这里注册我就不说了,下面我主要以截图的方式讲解。

appkey: 是极光推送配置添加APP生成的的,看下图红色矩形:

本文为运营思略作者原创,转载请注明来源&作者!

测试是被的TOKEN增加到进去,获取TOKEN的方法就是上一个步骤的( 2、注册设备Token,的第一句代码)

集成代码:

百度云推送:

下面的截图我要说下,当你执行完上面截图的步骤之后,你就给选择的应用创建了推送的功能,然后你在看这个应用的就是下面截图的

4.接着底下选择种类中我的证书。

推送内容大小

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

    //接受服务端推送通知传来的值,全部在userinfo里面。
    [UMessage didReceiveRemoteNotification:userInfo];
    [UIApplication sharedApplication].applicationIconBadgeNumber=5;

    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
    {
        UIUserNotificationType myType = UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound;
        UIUserNotificationSettings *mySetting = [UIUserNotificationSettings settingsForTypes:myType categories:nil];
        [[UIApplication sharedApplication] registerUserNotificationSettings:mySetting];

    }else{

        UIRemoteNotificationType myType = UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound;
        [[UIApplication sharedApplication] registerForRemoteNotificationTypes:myType];
    }


}

channel:来段官方解释”指明应用程序包的下载渠道,为方便分渠道统计,具体值由你自行定义,如:App
Store“。

2、第三方:

二、下载友盟推送SDK集成到应用

CoreTelephony.framework

阿里云推送:aliyun.com/product/cps

 
图片 8

进入《IOS开发者证书申请》

2、第三方平台

  

6.点击右键选择导出”………”,选择存放文件存放位置并给文件命名,记得给一个密码,这个密码随便设置,但必须得记住,后面会用到,到此.p12文件生成完成。

第三方PUSH平台:

      你如果还不知道怎么制作Ios推送证书,可以去 
查看,讲得非常详细。

3)这个代理比较核心,app接收到通知就会调用这个方法,其中的判断是判断接收到通知时,YES是应用目前在前端显示,NO应用在后台显示,并做一些事情。

华为推送:

是在本机上做的servlet接口推送,所以就是我本机的IP了,如果架设到服务器之后,这个IP就是要修改成服务器的IP。

5)以下代理,标记用户类型,大概意思是通过给每个设备绑定一个标识,在推送消息时,可以根据不同的标识给不同的用户发送消息,目前有三种,1>标识
2>别名 3>设备号 ,表示和别名可以在这个方法中设置。

需求:

   1、只贴通知部分代码,Appdelegate.m里面授权。

图片 9

长链接还是短链接

要说一个重点:就是服务器IP的增加,如果这里不增加服务器IP,WEB服务端是无法将通知推送到你手机的。这里的IP就是Servlt架设到服务器的IP,我这里由于

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注