• 1 导入SDK 2 桥文件导入 // 引入JPush功能所需头文件 #import "JPUSHService.h" // iOS10注册APNs所需头文件 #import 3 AppDelegate func registerJPush(launchOptions:[UIApplicationLaunchOptionsKey: ...) {



    项目用到了极光推送

    官方文档没有

    自己百度了

    测试OK

    就集成进来了


    1 导入SDK

    2 桥文件导入

    // 引入JPush功能所需头文件

    #import "JPUSHService.h"

    // iOS10注册APNs所需头文件

    #import <UserNotifications/UserNotifications.h>


    3  AppDelegate进行注册

    func registerJPush(launchOptions:[UIApplicationLaunchOptionsKey:Any]?) {

            

            if (UIDevice.current.systemVersionasNSString).floatValue >=10.0 {

                let entity = JPUSHRegisterEntity()

                entity.types = 0|1|2

                JPUSHService.register(forRemoteNotificationConfig: entity, delegate:nil)

            } else {

                JPUSHService.register(forRemoteNotificationTypes:0|1|2, categories:nil)

            }

     

            JPUSHService.setup(withOption: launchOptions, appKey: JPushAppKey, channel: JPushChannel, apsForProduction: isProduction)

            JPUSHService.setLogOFF() //关闭日志打印

        }


    AppDelegate代理方法

        func application(_ application:UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken:Data) {

            JPUSHService.registerDeviceToken(deviceToken)

        }

        

        // 前台模式收到推送数据

        func application(_ application:UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable:Any], fetchCompletionHandler completionHandler:@escaping (UIBackgroundFetchResult) ->Void) {

            JPUSHService.handleRemoteNotification(userInfo)

            completionHandler(.newData)

            let alertController =UIAlertController(title:"消息通知",

                                                    message:"您有一条消息请查看", preferredStyle: .alert)

            let okAction =UIAlertAction(title:"查看", style: .default, handler: {

                action in

                print("点击了确定")

            })

            alertController.addAction(okAction)

            UIApplication.shared.keyWindow?.rootViewController?.present(alertController, animated: true, completion: nil)

        }

        

        func application(_ application:UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable:Any]) {

            JPUSHService.handleRemoteNotification(userInfo)

        }



    5 很重要的配置


    6 清空角标

          // 置空消息未读数量

            JPUSHService.resetBadge()

            UIApplication.shared.applicationIconBadgeNumber =0

    7 注册标签 别名


       // 注册极光推送别名/标签

                                    JPUSHService.setTags(nil, alias: idStr,callbackSelector: nil, object: JPushManager.manager)


    展开全文
  • 本文主要用到的是【Amazon Pinpoint】推送。 开发人员的指南:https://docs.aws.amazon.com/zh_cn/pinpoint/latest/developerguide/welcome.html Amazon的SDK地址:https://github.com/aws/aws-sdk-ios 实践步骤...

    前言

    第一次对接aws,遇到的坑是真多。现在记录一下。本文主要用到的是【Amazon Pinpoint】推送。

    开发人员的指南:https://docs.aws.amazon.com/zh_cn/pinpoint/latest/developerguide/welcome.html

    Amazon的SDK地址:https://github.com/aws/aws-sdk-ios

    实践步骤,不要乱

    第一步:拿到推送证书

    一定要按照5个步骤一步一步来,拿到的证书才是正确的。

    第二步:建项目将 iOS 应用程序添加到 Amazon Pinpoint

    将 iOS 应用程序添加到 Amazon Pinpoint

    我们创建完应用之后,就可以在控制台上,拿到测试的Demo, 可以自己运行Demo,测试通知功能。

    拿Demo的步骤:

    1、登录 AWS 管理控制台,在 https://console.aws.amazon.com/mobilehub 打开 Mobile Hub 控制台。

    如果还没有创建iOS应用程序,则跳到第4步【创建iOS应用程序】。如果已经创建了,跳到第3步创建工程

    2、在所有的项目中,选择要测试的项目,https://console.aws.amazon.com/mobilehub/home

    选中自己的Projects , 点击进入,点击iOS 的 【integrate】,其中【download cloud config】是自己的配置文件,集成到自己的APP里面需要用的,点击右上角的【Resources】下载自己的测试Demo.

        

    3、如果上面的操作都找不到,那你就需要选创建一个工程。步骤https://docs.aws.amazon.com/zh_cn/pinpoint/latest/developerguide/getting-started-ios-mobilehub.html

    第三步:测试推送

    拿到demo之后,我们发现,程序运行不起来的。在demo中,有一个【podfile】文件,需要【pod install】更新一下,接着打开【MySampleApp.xcworkspace】 这个工程。

    之后,就可以 使用 Amazon Pinpoint 测试示例应用程序 通过控制台来测试通知了。

    另外需要注意,测试通知,一定要 导出.ipa文件,通过安装的方式安装在手机 ,才能接收到通知。如果还是没有收到通知,可以先关闭程序,再重新打开。

    第四步:将相关deviceToken和.pem文件证书传给后台

    测试成功后,我们发现,通过控制器的测试,是对所有设备一起发的通知。如果想针对单个用户,实现点对点的通知,我们需要给后台传deviceToken

    在【MySampleApp】中,我们已经拿到deviceToken了,在相关的代码中:

    - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
        NSLog(@"deviceToken: %@", deviceToken);
        [_pinpoint.notificationManager interceptDidRegisterForRemoteNotificationsWithDeviceToken:deviceToken];
    }
    

    拿到的deviceToken是类似下面这一串:

    Device Token = <examp1e 29z6j5c4 df46f809 505189c4 c83fjcgf 7f6257e9 8542d2jt 3395kj73>
    

    将设备令牌提交给 Amazon SNS 时,设备令牌中不要包含空格:如

    <examp1e29z6j5c4df46f809505189c4c83fjcgf7f6257e98542d2jt3395kj73>
    

    另外,我们还需要给后台提供.pem文件。直接第一步拿到的.p12转成.pem即可

    openssl pkcs12 -in myapnsappprivatekey.p12 -out myapnsappprivatekey.pem -nodes -clcerts
    

     

    这一步的操作,可以参考:APNS 入门 ,感觉这里的文档有点旧了,左边写着是2010年的,使用 Amazon SNS 控制台将通知发送到设备上的 iOS 应用程序一直尝试不成功。

     第五步:集成到真实APP项目中

     这一步,可以参考:将推送通知添加到您的应用程序

    这里的文档,是有坑的:

    1、iOS只有swift语言的说明。解决:通过对照Demo【MySampleApp】可以得到解决。

    2、pod sdk是一个大坑。文档上的pod 类库名写错了,一万个泥马

    解决:实现上,我们通过看demo,需要pod的类库是:

      pod 'AWSAuthCore', '~> 2.6.1'
      pod 'AWSPinpoint', '~> 2.6.1'
    

    github上的aws sdk地址,在【前言】上有写。

    最后,变更工程

    当我们集成完项目之后,最终需要变更工程文件,只需要登录控制台,把 【download cloud config】下载下来,替换一下工程的【awsconfiguration.json】文件即可。

     

    收不到推送

    1、检查APP工程,已经打开了【Push notification】开关

    2、APP的包,一定要通过.ipa文件安装。就是xcode -- product -- archive

    3、首次安装打开的APP,可能收不到推送。需要重启一遍即可。

     

     祝君对接成功。

     

    展开全文
  • 【课程特点】 学习iOS开发,请选本套课程,理由如下: 1、180节大容量课程:包含了iOS开发中的大部分实用技能; 2、创新的教学模式:手把手教您iOS开发技术,一看就懂,一学就会;... 3、贴心的操作提示:让您...
  • mpush,是一款开源的实时消息推送系统,采用java语言开发,服务端采用模块化设计,具有协议简洁,传输安全,接口流畅,实时高效,扩展性强,可配置化,部署方便,监控完善等特点。同时也是少有的可商用的开源push...

    系统介绍

    mpush,是一款开源的实时消息推送系统,采用java语言开发,服务端采用模块化设计,具有协议简洁,传输安全,接口流畅,实时高效,扩展性强,可配置化,部署方便,监控完善等特点。同时也是少有的可商用的开源push推送系统。

    特性和优势

    1. 源码全部开放,包括server、android、ios 、websocket等

    2. 代码质量高,全部模块化设计,真正的商用级产品,考虑到推送中遇到的大部分场景

    3. 安全性高,基于RSA精简的加密握手协议,简单,高效,安全

    4. 支持断线重连,及弱网下的快速重连,无网络下自动休眠节省电量和资源

    5. 协议简洁,接口流畅,支持数据压缩,更加节省流量

    6. 支持集群部署,支持负载均衡,基于成熟的zookeeper实现

    7. 用户路由使用redis集群,支持单写,双写,集群分组;性能好,可用性高

    8. 支持http代理,一根TCP链接接管应用大部分请求,让http请求更加及时

    9. 高度可配置化,基本上通过修改配置可满足大部分场景

    10. 扩展性强,高度模块化,基于SPI模式的可拔插设计,以满足特殊需求

    11. 监控完善,日志详细,可快速排查线上问题及服务调优

    教程与文档

    源码

     

     

    没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。




        本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/7496489.html,如需转载请自行联系原作者

    展开全文
  • 什么是推送通知? 推送通知是由应用程序和网站传输的简短信息性消息,可以... 推送通知可以有效地使您保持联系并将访客带回您的站点,并且可以在台式机和移动设备上使用。 在本教程中,您将学习如何使用Smart No...

    什么是推送通知?

    推送通知是由应用程序和网站传输的简短信息性消息,可以随时传达给受众。 与当访客在网站或浏览器上时显示的弹出窗口不同,即使访客不在网站上,也会显示推送通知。

    允许推送通知

    推送通知使您可以向启用了用户的用户发送信息,即使他们没有访问您的网站也是如此。 推送通知可以有效地使您保持联系并将访客带回您的站点,并且可以在台式机和移动设备上使用。

    移动和Web推送通知的类型

    时间敏感通知

    这种通知旨在共享实时影响用户的信息。 例如,报告当前交通状况的交通应用会影响用户计划回家行程的方式,并实时相关。

    令人鼓舞的通知

    这些友好且有趣的通知发送给用户,以鼓励他们了解自己的进度。 例如,一条消息,“您今天走了5,000步! 恭喜,您已经燃烧了1000卡路里!” 令人鼓舞的通知诱使用户与您的应用或网站互动。

    提醒通知

    这些是发送给用户的通知,以提示用户完成特定的操作,并且在工作站点,约会站点,营养站点等位置很受欢迎。例如,旅行社可以向用户发送通知,提醒他们完成航班预订。

    促销通知

    这种通知在电子商务应用程序和网站中很常见。 如果您正在为产品进行促销,则可以发送通知以使您的客户知道可用的优惠。 由于用户已经通过在手机上下载应用程序来表现出忠诚度,因此,每次有重大促销活动时,您都可以向他们发送通知。

    号召性用语通知

    大多数电子商务网站都使用此类通知来推动其用户采取行动。 例如,类似“通过使用代码BLACKFRI享受10%的折扣,有效期至8月2日”之类的消息,可能会使更多的用户采取行动。

    地理位置通知

    这些通知取决于用户的位置。 它们是增强客户体验的好方法。 例如,如果在用户的位置附近发生事件,则可以向他们发送通知,让他们知道该事件,甚至轻推他们邀请他们的朋友。

    警报和新闻通知

    新闻通知用于通知用户突发新闻,而警报则通知用户其他人的实时交互。 社交网站使用警报来通知用户有关消息的消息,或某人喜欢照片或对其状态更新发表评论时的消息。

    为什么要向网站添加推送通知?

    效用

    推送通知不需要复杂的过程-只要用户同意,他们就会看到您的消息。 他们的影响力高达100%。

    实时交付

    推送通知是实时传递的,通常显示在用户手机或台式机的屏幕或通知滑块上。 所有操作系统都支持推式通知,包括macOS,iOS,Android和Windows。

    多用途

    如上例所示,所有类型的企业都可以从推送通知中受益。

    报告与分析

    推送通知使您可以获得有关客户行为的详细报告,例如客户的响应时间和点击率。 然后,您可以使用此信息来学习如何改善以后的广告系列的效果。

    提高转化率

    推送通知在提高转化率方面非常有效,因为展示率很高。 您可以使用紧急技术使用它们来促使用户Swift采取行动。 例如,您可以发送对特定项目或服务提供限时折扣的推送通知。 用户只需要点击即可访问要约。

    WordPress的智能通知推送通知插件的功能

    Smart Notification是一个插件,可轻松将推送通知添加到WordPress网站。 实际上,它是用于配置,发送和跟踪对Web或移动设备的推送通知的完整系统。

    检测GPS位置

    智能通知提供了检测用户位置的功能。 通过此功能,您可以根据城市使用地理位置和目标用户,从而为客户提供最相关的信息。

    报告仪表板

    Smart Notification具有功能强大的仪表板,可提供有关广告系列在所有平台上的效果的详细报告。 此类数据包括观看次数,点击次数,点击率以及视图和点击参与度的图形表示

    移动和Web推送通知

    使用智能通知插件,您可以将通知发送到所有Web浏览器以及iOS,Android,Corona和Blackberry等移动操作系统。

    例如,您可以使用推送通知执行以下操作:

    • 让用户知道您的博客或网站上的新帖子
    • 为电子商务商店提供折扣

    入门

    首先从CodeCanyon下载Smart Notification插件 如果您还没有CodeCanyon帐户,则必须先创建一个。

    购买插件后,您将获得指向可下载文件的链接。 另外,您也可以在帐户的下载部分中找到它们以及其他购买的物品。

    下载WordPress文件后,登录到WordPress网站,转至Plugins> Add New并上传zip文件。 上传后,单击立即安装 ,等待几秒钟,然后单击激活 您现在可以开始使用插件了。

    Smart Notification插件具有许多选项,如下所示:

    智能通知管理员选项

    在本文的其余部分中,我们将探讨其中的一些可能性。

    设置Web推送通知

    尽管有不同的渠道允许使用智能通知进行通知,但我们仅介绍如何使用Web推送通知,这是发送通知的最常见渠道。

    第一步是启用常规设置中的通知。

    使用智能通知启用通知

    客制化

    下一步是自定义弹出窗口的外观,位置和消息。 您可以从“ 弹出框设置”选项卡中执行此操作。   一些其他自定义项包括:

    • 向访问者显示推送通知之前要延迟的秒数
    • 驳回推送通知的用户要等待再次请求权限的天数
    • 弹出窗口将出现的位置
    • 徽标定制
    配置弹出框设置

    要配置通知,我们需要Firebase中的API密钥和发件人ID。 Firebase是一个移动和Web应用程序开发平台,可提供数据库,存储,身份验证,报告和托管等服务。 Smart Notification插件使用Firebase作为后端。

    首先,请前往Firebase网站并创建一个免费项目。 导航到项目设置并获取必要的键。

    现在,导航到WordPress仪表板中的Smart Notifications> Web Push ,并查看用于配置的Web浏览器列表。

    用于配置的Web浏览器列表

    启用桌面推送通知,并在提供的字段中输入Firebase API密钥和应用ID。

    注意:如果您希望显示推送通知,则需要HTTPS。 如果您的网站没有HTTPS并且您尝试发送推送通知,则Google将显示安全警告。

    选择将与推送通知消息一起显示的图标并保存这些更改。

    配置Firebase API密钥

    配置服务器

    下一步是将新的cron作业添加到您的Web服务器。 通过Cron作业,您可以自动化站点上的某些命令或脚本。 此功能提供了直接从服务器发送推送通知消息的功能,而没有任何延迟。 它还允许消息调度。

    我将向您展示如何为基于cPanel的Web服务器添加新的cron作业。 如果您不使用cPanel,则可能必须遵循不同的过程。

    使用cPanel添加新的cron作业

    您必须为cron作业提供命令-您可以在Smart Notification Developer文档中找到该命令

    在Smart Notification Developer文档中找到cron job命令

    最后,为其他浏览器启用推送通知。

    为每个可用的浏览器启用推送通知

    订阅和欢迎留言

    智能通知插件还允许您在成功订阅后重定向用户。 您还可以启用成功订阅后显示的桌面推送通知欢迎消息。

    桌面欢迎消息和订阅重定向

    如下所示,用户现在可以从我的WordPress网站订阅推送通知。 如果要访问用户的地理位置以发送地理参考的通知,则可以为此请求权限。

    要求发送推送通知的权限

    您还可以选择将推送通知作为窗口小部件嵌入到希望的任何页面上。

    成功订阅后,您可以转到智能通知仪表板并查看推送通知的执行情况!

    智能通知仪表板

    结论

    在本教程中,您学习了如何在WordPress中启用Web推送通知。 Smart Notification插件不仅允许Web通知,还包括Web通知,包括Android和iOS中的移动通知以及Messenger和Facebook Web通知。

    翻译自: https://code.tutsplus.com/tutorials/how-to-add-push-notifications-in-wordpress--cms-33658

    展开全文
  • Flutter接入极光推送

    2019-07-30 04:03:34
    (1)搜索 https://pub.dartlang.org/packages/jpush_flutter ,安装插件,并且按照官方配置/android/app/build.gradle android: { .... defaultConfig { applicationId "替换成自己应用 ID" ...

    (1)搜索 https://pub.dartlang.org/packages/jpush_flutter ,安装插件,并且按照官方配置 /android/app/build.gradle

    android: {
      ....
      defaultConfig {
        applicationId "替换成自己应用 ID"
        ...
        ndk {
    	//选择要添加的对应 cpu 类型的 .so 库。
    	abiFilters 'armeabi', 'armeabi-v7a', 'x86', 'x86_64', 'mips', 'mips64' // 'arm64-v8a',        
        }
    
        manifestPlaceholders = [
            JPUSH_PKGNAME : applicationId,
            JPUSH_APPKEY : "appkey", // NOTE: JPush 上注册的包名对应的 Appkey.
            JPUSH_CHANNEL : "developer-default", //暂时填写默认值即可.
        ]
      }    
    }

    (2)Flutter 新建页面,我放在Welcome页面

    class SplashPageState extends State<SplashPage> implements OnSkipClickListener {
      JPush jPush = new JPush();
      String registerId;
      _startupJpush() {
        jPush.setup(appKey: "c52495cbcbc37ee42f04e751", channel: "developer-default",debug: true);
      }
    
    
      _getRegisterID() async {
        registerId = await jPush.getRegistrationID();
        print('*********registerid=' + registerId);
        return registerId;
      }
    
    
      _setPushTag() {
        List<String> tags = List<String>();
        tags.add("jason");
        jPush.setTags(tags);
      }
    
    
      _addEventHandler() {
        // Future<dynamic>event;
        jPush.addEventHandler(onReceiveNotification: (Map<String, dynamic> event) {
          print('*********addOnreceive>>>>>>$event');//进程运行时候可以接受
          var title = event['alert'];
          var extra = json.decode(event['extras']['cn.jpush.android.EXTRA']);
          notifyRoute(extra['type'],title,extra['id']);
          print('*********msg:$event');
        }, onOpenNotification: (Map<String, dynamic> event) {
          print('*********addOpenNoti>>>>>$event'); //进程关闭的时候可以接受
          var title = event['alert'];
          var extra = json.decode(event['extras']['cn.jpush.android.EXTRA']);
          notifyRoute(extra['type'],title,extra['id']);
        }, onReceiveMessage: (Map<String, dynamic> event) {
          print('*********addReceiveMsg>>>>>$event'); //进程运行时候可以接受
          print(event.toString());
          var jsStr = json.decode(event.toString());
        });
    }
    
    
    //推送跳转
    void notifyRoute(String type,String title,String id) {
      if(type!=null) {
        switch(type){
        case 'news':
          Navigator.of(context).push(new MaterialPageRoute(builder: (ctx) => new WebView(title: title, url:id )));
          break;
        case 'tmdetail':
          Navigator.of(context).push(new MaterialPageRoute(builder: (ctx) => new DetailPage(tmId: int.parse(id))));
          break;
      }
      }
    }
    
    
    @override
    void initState() {
    // TODO: implement initState
      super.initState();
      _startupJpush();
      _setPushTag();
      _addEventHandler();
      _getRegisterID();
      _getWelcomeImage();
    }
    }

    (3) 我的用是Extras 并且在客户端 通过参数 进行指定页面跳转

    (4)服务端推送,C# Core版本 nuget搜索JiGuang.JPush

    /// <summary>
    /// 极光推送全局推送
    /// </summary>
    /// <param name="title">标题</param>
    /// <param name="content">正文</param>
    /// <param name="dic">extras字典</param>
    /// <param name="indent">指定安卓页面,没用</param>
    /// <param name="outmsg"></param>
    /// <returns></returns>
    public static bool Send(string title,string content, Dictionary<string,object> dic, Dictionary<string, object> indent,out string outmsg)
    {
      var client = new Jiguang.JPush.JPushClient(appKey,appSecret);
      var android = new Android { Title = title, Alert = content, AlertType = 0, Extras = dic, Indent = indent };
      var ios = new IOS{ Alert= title, Extras= dic };
      var pushInfo = HD.DLL.Push.GetTopInfo();
      if(pushInfo!=null&&pushInfo.Id>0 )
      {
      var ts = System.DateTime.Now.Subtract(pushInfo.Addtime);
      if(ts.Hours<1)
      {
        outmsg = "最近的全局推送时间:"+pushInfo.Addtime+",请间隔一个小时";
        return false;
      }
      }
      var playLoad = new Jiguang.JPush.Model.PushPayload() {
        Platform = "all",
        //Audience = "all",
        Notification = new Notification() { Alert=title, Android =android,IOS=ios},
        Message = new Jiguang.JPush.Model.Message() { Content=content,Title=title,Extras= dic }
      };
      var response=client.SendPush(playLoad);
      outmsg = response.Content;
      var ret= response.StatusCode== System.Net.HttpStatusCode.OK;

      //记录推送日志
      pushInfo.Addtime = System.DateTime.Now;
      pushInfo.Title = title;
      pushInfo.Content = content;
      pushInfo.UserId = 0;
      pushInfo.Extras = JsonConvert.SerializeObject(dic);
      pushInfo.Status = ret ? 1 : -1;
      Push.Add(pushInfo);
      return ret;
    }

     

     

    转载于:https://www.cnblogs.com/kobewang/p/10318051.html

    展开全文
  • 引言由于之前自己团队需要一个消息推送系统来替换JPUSH,一直找了很久基本没有真正可用的开源系统所有就直接造了个轮子,造轮子的时候就奔着开源做打算的,只是后来创业项目失败一直没时间整理这一套代码,最近比较闲...
  • iOS远程推送--APNs详解

    2019-07-20 11:45:17
    iOS远程推送–APNs详解 iOS远程推送,远远不是配置两个证书,集成个SDK那么简单。 本文会从实践出发,结合苹果的官方文档,带你全面的了解苹果APNs服务。除了基础原理和集成方法外,还将详细介绍了APNs服务接口的...
  • 我们有两种类型的通知,并且它们的创建位置不同,它们不同:本地通知是我们在本地调度的通知,而远程通知(通常称为推送通知)是从某处的服务器发送的。 远程通知需要服务器才能正常工作,因为您将消息发送到Apple的...
  • InfoQ:各位观众大家好,我们...我叫郭生求,来自腾讯公司数据平台部,最近一直在做的是一个实时的推送系统,叫腾讯信鸽,本人目前的工作主要集中在后台系统的开发,包括系统优化工作。InfoQ:好的,谢谢郭老师。...
  • Xcode 8和iOS10正式版出来后,这个方法做了修改,也是之前也没发现这个参数有啥用: UNNotificationCategory *category1 = [UNNotificationCategory categoryWithIdentifier:@"Category1" actions:@[action2,action...
  • 而随着各大厂商浏览器版本的迭代,前端技术的不断革新,消息推送用到的场景也越来越多了。收发邮件提醒,在线IM聊天,自动化办公提示等等,web系统里总是能见到消息推送的应用。消息推送用好了能增强用户体验,用...
  • Swift写服务端 — Perfect框架学习(一)一、Perfect简介Perfect是一组完整、强大的工具箱、软件框架体系和Web应用服务器,可以在Linux、iOS和macOS (OS X)上使用。该软件体系为Swift工程师量身定制了一整套用于...
  • 继续我们在Firebase上的系列文章,在本文中,我们将介绍Firebase Cloud Messaging (简称FCM),即Google针对移动应用程序的低延迟消息和通知编排服务。 只要iPhone一直存在,推送通知就在重要事件的预定时间通知...
  • 产品动态7 月 1 日起即时通讯和推送 REST API 将开启请求频率限制2019 年 7 月 1 日起,我们将对推送和即时通讯服务中调用 REST API 进行消息操...
  • OpenStack Swift学习笔记

    2014-01-10 10:31:10
    OpenStack Object Storage(Swift)是OpenStack开源云计算项目的子项目之一。Swift的目的是使用普通硬件来构建冗余的、可扩展的分布式对象存储集群,存储容量可达PB级。 Swift并不是文件系统或者实时的数据存储系统...
  • 1.你认为cinder与swift区别是什么? 2.cinder是否存在单点故障? 3.cinder是如何发展而来的? 在openstack中,我们经常遇到这么个问题,cinder与swift的区别是什么? cinder与swift各自的用途是什么?
  • 流畅的动画一开始就被认为是 iOS 应用的特点之一。这不仅归功于 iOS 系统强大的动画引擎(从而使得 App 能够一边展示流畅的动画一边做着其他的事情),还归功于系统提...
  • 这次我们尝试使用的是个推(之前专门做消息推送的)旗下新推出的产品“个数·应用统计”,根据官方的说法,个推的数据统计产品通过专业的移动应用数据分析,可以为用户的应用提供实时数据统计分析服务,包括了解版本...
1 2 3 4 5 ... 20
收藏数 2,459
精华内容 983
热门标签