IM解决方案

第一种基于推送

1、推送:用户不在线可以收到消息,eg:QQ的推送

2、缺点:限定字数 --- 不超过 256 个字符(苹果服务器规定的),推送可以是语音、图片,不过字节数有限制;

3、iOS  --- Jpush(极光推送)特点:块

      和 百度推送的第三方服务 优点:基于LBS进行推送 --- 发送消息给百度服务器,服务器推送给苹果服务器《可以基于某个地区,社区》

4:缺点:iOS 和 安卓之间的互通有问题 --- 安卓的机制和苹果的推送机制不同。(不在线的情况下,苹果推送安卓,安卓客户端推送给苹果会出问题)

第二种:基于XMPP 协议的方案

1、xmpp协议,在socket基础上封装的

2、特点:简单方便; 将xmpp的SDK嵌套进来就行,是基于 xml 文件格式的传输;

3、需要构建xmpp 服务器(基于开源框架的构建:openFile)

4、放弃 基于 xmpp协议方案的原因 : 语音 和 视频的实时传输,实现难度大。(长链接);

  eg:QQ , 需要修改服务器 openFile框架

第三种方案 : 基于socket 

1、选择一种socket 框架,eg:GCDSocket 框架。

2、服务端也需要选择 socket矿建

3、特点:安卓和苹果的互通没有任何问题。可以实时的语音和视频通讯;

4、IM 集成方案就是很多就是很多公司基于  socket封装好的解决方案,需要花钱;提供集成解决方案;

5、缺点:调适难度大(未自己进行封装);基于GCDSocket框架写的IM即时通讯方案


1、不涉及语音,图片少,就可以基于推送;

2、如果用户不在线要接收消息,基于XMPP 协议的方案就不合适

3、组合方案:文字信息实现推送(不用判断当前用户是否在线);基于Socket的封装需要判断当前用户是否在线,如果用户应用在后台,就要进行推送,否则有可能收不到消息;


推送证书的申请

1、分为 测试和上线证书 ,两个 tokenDevice 不同, 对应的苹果服务器也不相同

2、测试成功之后,需要切换发布证书,才能上线

3、Certificates  --- Development 

4、AppId 必须是唯一的;

5、AppIDs  ---- App ID Description :Name (pushDevelopmentTest) -- Bundle ID(公司域名反写 + 应用名《选择固定的AppID》)  ---- Push Notifivation 选对勾:pushNotifications Enabled

6、 Profiles 文件t添加 --- Selecte App ID -- Selected Cetificates -- Device -- Profile Name:profile.test -- downLoad

7、服务器需要的文件 为 Certificates ---Development -- Apple push Notification Service SSL(sandBox)  --- AppID 绑定 --- 生成p12证书请求 CSR file -- cetificate is Ready <服务器用测试或者发布的推送证书>

为什么要用推送?

1、iOS操作系统限制普通应用程序不能在长期在后台运行;《可以再后台运行的程序有三种 : voip, 获取经纬度信息类, 音频播放的app》;可以申请多运行10分钟以内

2、有IM的应用一旦退出或者切换到后台,没有办法接受到实时的消息。

3、操作系统帮我实现的推送。

5、推送的样式

6、退推送的步骤 --- Provider ---> APNs ---> Device --- >Client App 接收; 后台通知中心可以接受到,前台直接可以接受到; 消息的发送者(消息接受者《具体设备》,发送的设备的具体应用《那个App》) --- 》苹果服务器 --- 》用户设备 --- 》 App

7、发送的消息提供给苹果服务器 需要知道 发送给那个设备,那个应用程序

8、通过什么来区分应用程序  ---- AppID 来区分,唯一性

9、UUID 设备的唯一标识,可以锁定哪一个设备;

10、设备标识号:TokenDevice 传进Provider,苹果服务器,操作系统判断应用和设备是否存在;

11、第一步:Device  ---- > APNs(SSL connect),询问设备是否允许推送

    第二部  :APNs  --- > Decece (deviceToken) 苹果服务器给设备唯一标识

  第三部 : Device ---- >ClientApp (deciceToken)  --- > deviceToken -- >Provider 再走前面的步骤

12: 推送证书的制作;  应用程序要获取当前设备的 tokenDevice (相当于ID);  把获取到的TokenDevice 提交给 message Server 服务器 - ; 应用可以接受消息

Demo

应用程序名跟 证书的后缀一样

1、应用 Bundle Identifier  与AppID 的BundleID一样

2、设置推送的样式,在Appdelegate里应用加载的回调方法里\

// 设置推送的样式

[[UIApplication sharedApplication ] registerForRemoteNotificationTypes: ///8.0 Desprecated(UIRemoteNotifivationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];

(注册证书已有,会发送通知请求)

************8.0以上系统使用 registerUserNotificationSettings:

3、重写函数,用于接受DeviceToken

-(void)application:(UIApplication *)appdidRgisterForRemoteNotificationWithDeviceToken:(NSData *)deciceToken {

        NSString *strToken = [NSString stringWithFormat:@"DeviceToken=%@",deviceToken];

       [self alertNotice:@"" wihMSG:strToken cancleButtonTitle:"ok" otherButtonTitle"@""];

}

4、对照Bundle Identifier

5\pushTestPlist 文件也要更改 Surppoting Files --- pushTest.Info.plist -- Bundle Identifier

6、target 和 PROGECT--- Build Setting  --- Code Signing ---Code Signing Identity -- 测试证书

7、Provisioning Profile --- 添加生成的描述文件

8、客户端允许推送之后 获得 deciceToken

9、.cer 推送证书 给服务器 / 给一个工程(服务端程序),相当于给服务器 deviceToken 和 cetificate

10\、服务器端程序获得 deviceToken 和 cetificate 之后运行,服务器就可以进行按时推送了


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容