zoukankan      html  css  js  c++  java
  • iOS应用第三方推送的添加

    现在的一些第三方的推送平台挺好用,主要是因为他们有类似微信公众平台一样的管理后台,简单易用,封装了很多开发者需要的推送功能。

    下面以个推为例:

    1.在个推的应用配置iOS部分设置自己的BounleID以及上传自己的推送证书

      推送证书的创建和P12文件的生成请移步:http://docs.igetui.com/pages/viewpage.action?pageId=590063

    2.工程中集成SDK

    这种三方的框架集成比较简单,可以参考个推的APPDemo进行集成,主要就是导入库,然后在APPdelegate配置下就好了。

    demo以及文档地址:http://docs.igetui.com/pages/viewpage.action?pageId=1934080

    3.代码的地方需要注意的是:

    在线的推送和离线的推送入口是不一样的

    离线的时候,是通过苹果服务器周转的推送的delegate入口:

    - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userinfo {
        // [4-EXT]:处理APN
        NSString *payloadMsg = [userinfo objectForKey:@"payload"];
        if (payloadMsg) {
            NSString *record = [NSString stringWithFormat:@"[APN]%@, %@", [NSDate date], payloadMsg];
            NSLog(@"获得推送消息1:%@",record);
        }
    }

    在线的来自于个推服务器直接的消息发送,个推的delegate,然后可以使用下面的函数做一个本地的通知:

    - (void)GeTuiSdkDidReceivePayload:(NSString *)payloadId andTaskId:(NSString *)taskId andMessageId:(NSString *)aMsgId fromApplication:(NSString *)appId
    {
        // [4]: 收到个推消息
        _payloadId = [payloadId copy];
        
        NSData* payload = [GeTuiSdk retrivePayloadById:payloadId];
        
        NSString *payloadMsg = nil;
        if (payload) {
            payloadMsg = [[NSString alloc] initWithBytes:payload.bytes
                                                  length:payload.length
                                                encoding:NSUTF8StringEncoding];
        }
        
        NSString *record = [NSString stringWithFormat:@"%d, %@, %@", ++_lastPayloadIndex, [self formateTime:[NSDate date]], payloadMsg];
        
        NSLog(@"task id : %@, messageId:%@,内容:%@", taskId, aMsgId,record);
        [self createNotifiction:payloadMsg];
    }

    本地通知:

    -(void)createNotifiction:(NSString *)content{
        //定义本地通知对象
        UILocalNotification *notification=[[UILocalNotification alloc]init];
        //设置调用时间
        notification.fireDate=[NSDate dateWithTimeIntervalSinceNow:0];//通知触发的时间,10s以后
        notification.repeatInterval=2;//通知重复次数
        //notification.repeatCalendar=[NSCalendar currentCalendar];//当前日历,使用前最好设置时区等信息以便能够自动同步时间
        
        //设置通知属性
        notification.alertBody=content; //通知主体
        notification.applicationIconBadgeNumber=1;//应用程序图标右上角显示的消息数
        notification.alertAction=@"滑动来查看"; //待机界面的滑动动作提示
        //notification.alertLaunchImage=@"Default";//通过点击通知打开应用时的启动图片,这里使用程序启动图片
        notification.soundName=UILocalNotificationDefaultSoundName;
        
        //设置用户信息
        notification.userInfo=@{@"type":@"LocalNotification"};//绑定到通知上的其他附加信息
        
        //调用通知
        [[UIApplication sharedApplication] scheduleLocalNotification:notification];
    }

     具体请参考关于个推推送方式文档:

    http://docs.igetui.com/pages/viewpage.action?pageId=2687544#iOSSDK130集成步骤-3、更多集成方案:个推SDK透传消息非APNS(可选)

  • 相关阅读:
    VirtualPathUtility.IsAppRelative的bug?
    textoverflow: ellipsis 在IE8、9下显示问题
    Windows Server 2012 不支持SharePoint Server 2010(KB2724471)
    本地测试网址推荐
    神奇的img
    json三层解析(数组解析)
    json两层解析
    把json数据转化成对象
    Centos7 修改yum源为阿里源
    使用Webdriver刷博客文章评论
  • 原文地址:https://www.cnblogs.com/rayshen/p/4863308.html
Copyright © 2011-2022 走看看