020-88888888

网站建设 APP开发 小程序

SOLUTIONS/方案

为您提供更有价值的思想和方案

您当前位置> 主页 > 方案

移动互联网时代:如何集成环信即时推送服务提升应用体验

谁都不希望错过重要的消息,然而应用推送要么根本不来,要么一来便是一堆毫无价值的垃圾,用户厌烦之后直接关闭通知,如此一来开发者苦心经营的联系就此中断了。怎么才能够让推送既做到及时又能显得贴心,这已然成为提升用户活跃度以及留存率的关键一战。

摸清环信推送的门道

环信即时推送服务,其本质是个云端消息中转站,它与你的应用以及用户设备相连接,这套系统可以同时对iOS、安卓和Web平台予以支持,开发者编写一次逻辑,多个平台均可使用,它并非依赖手机厂商的推送通道,而是自行建立长连接,以此保证消息能够实时交付到用户手中。

环信推送架构主要分成三块,客户端SDK是嵌入在你应用里的代码,它负责与服务器进行联系,始终准备着接收消息,服务器端API是你用以发消息的工具,其能够发送文字、图片等各类不同类型,消息队列好似一个可靠的快递员存在,在网络状况不好的时候它会对消息进行暂存,等网络恢复之后再持续发送,以此确保每条消息都不会丢失。

集成前先备好三样东西

当准备工作充分完成后,集成过程中所产生的坑能减少一半。你需要先前往环信官网,注册一个开发者账号,接着创建一个新应用,随后系统会为你分配唯一的AppKey以及Client ID,这两者如同你的应用身份证,在后续过程中处处都会用到。

针对别种平台还须另行筹备,iOS平台最为繁杂,非得前往苹果开发者中心申领推送证书,而后上传至环信控制台方可使用,安卓以及Web则较为简易,关键在于于Android Studio或者VS Code里配置妥善开发环境,保证能够正常开展编译运行项目便可,诸般基础夯实了,后续集成SDK便是自然而然之事。

pod '环信SDK'  

客户端SDK这样接才稳

#import <环信SDK/环信SDK.h>  
  
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  
// 初始化SDK  
[环信SDK initWithAppKey:@"YourAppKey"];  
  
// 注册远程通知  
[application registerForRemoteNotifications];  
  
return YES;  
}  

将iOS进行集成,建议采用CocoaPods,于Podfile里增添环信的依赖,接着执行安装的指令。关键的代码编写在AppDelegate之中,在应用启动之际初始化SDK并且注册远程的通知,对于系统返回的设备令牌,要马上调用接口将其上传给环信服务器,如此才能够知晓把消息推送给哪一个设备。

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {  
[环信SDK registerDeviceToken:deviceToken];  
}  

于安卓集成时,需于项目级的build.gradle里添加环信仓库,接着要在模块级的build.gradle中添加依赖。将初始化置于Application类的onCreate方法内,要记得于AndroidManifest.xml里注册自身的推送服务类。在自定义服务之中重写onMessageReceived方法,所收到的推送数据便会在此处进行解析处理,进而能够弹出通知,也能够更新UI。

implementation '环信SDK:latestVersion'  

服务端API配置要灵活

import 环信SDK.环信SDK;  
  
public class MyApplication extends Application {  
@Override  
public void onCreate() {  
super.onCreate();  
// 初始化SDK  
环信SDK.init(this, "YourAppKey");  
}  
}  

环信服务端 API 使用起来颇为便利,发送消息只需调用 HTTP 接口,单播消息发送给特定用户时,在接口地址里面带上用户 ID,将消息内容放在 请求体之中 ,并且能够针对 VIP 用户发送个性化通知 ,或给购物车中有商品尚未付款的用户发出提醒。

  
  
  
  
  

对应接口存在于群发场景之中,广播消息需发送给所有用户,此情形适宜用于发送系统公告,以及版本更新提醒,组播消息则是发送给用户组,举例而言,只是针对某个地区的用户去推送本地优惠活动,消息类型涵盖文本、图片、语音,甚至还包括自定义数据,后端传递何种格式,客户端便会接收到何种格式。

推送策略优化有讲究

import 环信SDK.环信PushMessageReceiver;  
  
public class MyPushService extends 环信PushMessageReceiver {  
@Override  
public void onMessageReceived(String message) {  
// 处理推送消息  
}  
}  

推送可不是发出去就没事了,要是时机和内容不合适,反倒会招人厌烦。依据用户活跃数据,选择在早上上班途中或者晚上临睡前这些打开率高的时间段进行推送,效果比大半夜发消息要好很多。在内容方面结合用户画像,给游戏迷推送新皮肤,给购物狂推送优惠券,这样点击率能够翻倍。

控制频率同样重要,一日之内切莫超过三条,仅发送重要消息,勿以无关内容进行骚扰。多多开展A/B测试,针对同样的活动更换不同的文案以及配图,查看哪一个版本用户更为喜欢。统计得出的数据表明,经过优化处理的推送,用户留存率普遍能够提升至20%以上。

常见问题有应对方案

POST /push/single HTTP/1.1  
Host: api.环信.com  
Content-Type: application/json  
Authorization: Bearer YourAccessToken  
  
{  
"to": "user_id",  
"message": {  
"text": "Hello, World!"  
}  
}  

常见状况是收不到消息,一开始要去确认设备网络是否处于正常,又还要查看设备成功完成了注册没有,是否与环信完成有关联。针对于安卓系统的设备,也需要进一步去检查,厂商的通道是不是依据相应设置完成了正确设定,国内诸多厂商均拥有属于自己的推送服务体系,必须得去到环信所专有的后台,将华为、小米以及OPPO这三者在其中的配置,必须全部填写无误。

因服务端处理时间过长,致使最终推送延迟,或是并发过高却未进行限流,消息在发出前于自身服务器停留耗费诸多时间造成。对于此种情况,可优化代码逻辑,异步处理耗时较长代码代码,必要时添加消息队列缓冲进行处理。内容显示出现乱码,大多是编码格式不一致所致,所以服务端和客户端都应统一采用UTF-8,JSON格式也需严格校验。

POST /push/broadcast HTTP/1.1  
Host: api.环信.com  
Content-Type: application/json  
Authorization: Bearer YourAccessToken  
  
{  
"message": {  
"text": "Important Announcement!"  
}  
}  

现在应用推送最令人生厌之处你认为是什么,对,请在评论区域尽情吐槽下,点个赞以便让更多开发者瞧见用户的真切想法。

POST /push/group HTTP/1.1  
Host: api.环信.com  
Content-Type: application/json  
Authorization: Bearer YourAccessToken  
  
{  
"to": ["user_id1", "user_id2"],  
"message": {  
"text": "Group Message"  
}  
}  

相关案例查看更多