在移动应用领域,APP的消息推送是维系与用户沟通的关键途径。但不少开发者在使用MUI和个推进行消息推送时,常常面临各种难题。因此,一份详尽的指导手册变得尤为必要。
介绍MUI
2015年7月起,MUI便被一些开发者应用于APP开发。我亲自用MUI开发APP也有段时间了。这款框架相当成熟,给移动开发带来了诸多便利,大大提高了开发速度。但若在使用过程中未能妥善整理遇到的问题,后续开发可能会遇到障碍。我之前就因未整理工作而后悔,现在不得不重新整理遇到的问题。这事也提醒了其他开发者要注重经验总结。
个推的优秀客服
个推的服务非常周到。在开发APP消息推送时,常常会遇到不少挑战。每当这时,个推的技术客服人员总能提供出色的服务。记得有一次我遇到问题,向他们求助,结果真的让我感到非常惊喜。他们立刻把我引入一个讨论群,马上就有八位程序员加入协助。对于开发者而言,这简直就是一场及时雨。有了这样的帮助,开发者在整合个推服务时遇到的诸多难题都能轻松解决。
个推的配置使用指南
个推的配置操作至关重要。官方提供了配置指南,不过很遗憾我无法详述,只能提供一个链接供大家查阅。遵循正确的配置指南对个推进行APP消息推送极为关键,这直接影响到消息能否准确送达用户。每个步骤都有其理由,开发者必须严格依照规定进行配置等相关操作。
MUI中的两种监听事件
MUI中涉及接收push的监听事件有两种,一种是未详述的,另一种是click。这两种事件有不同的触发条件。这些条件与APP的运行状况和平台有关。因此,开发者需要深入了解这些差异,以便制定出准确的消息推送方案。
IOS平台的不同情况
IOS平台有其独特之处。当应用处于联网状态,事件会立即被激活。这种情况很理想,因为它能迅速将消息内容告知用户。然而,若应用未联网,情况就大不相同了。这时,苹果的APS会向终端发送消息,终端收到后便会进入消息中心。只有用户点击该消息并打开应用,才会触发click事件。因此,我们必须针对IOS的这一特性来设计消息推送的流程。
Android平台的多种情况
在Android系统上,情况更为复杂。首先,它能接收的消息种类繁多。以透传消息为例,若接收的透传消息格式正确(如:[‘title’=>“通知标题”,‘’=>“通知内容”,‘’=>“通知去干嘛这里可以自定义”]),无论应用是否处于运行状态,消息都会进入消息中心。点击该消息后,会打开应用并触发click事件。若透传消息格式不正确,应用在线时将直接触发事件;若应用离线,则消息不会在消息中心显示,也不会触发任何事件。
在2.3项目案例中,我利用个推的API创建了一个新类。不过,具体代码这里不便详述。我想了解一下,在使用MUI和个推进行消息推送时,大家遇到的最大难题是什么?同时,也欢迎点赞和转发这篇文章,帮助更多开发者避免走错路。
<?php
namespace CommonLib;
class IGeTui {
private $host;
private $appKey;
private $appId;
private $masterSecret;
private $cid;//客户端标识
private $deviceToken;
private $igt;
/**
* 写在前面的话:
* IOS建议使用透传消息模板来推送消息
* android可以使用点击通知打开应用模板和透传消息模板
* */
public function __construct(){
//导入个推的SDK文件
vendor("IGeTui.IGt#Push");
vendor("IGeTui.igetui.utils.AppConditions");
//赋值
$this -> host = 'http://sdk.open.api.igexin.com/apiex.htm';
$this -> appKey = '';
$this -> appId = '';
$this -> masterSecret = '';
$this -> cid = '';
$this -> deviceToken = '';
$this -> igt = new IGeTui($this -> host , $this -> appKey , $this -> masterSecret);
}
/**
* 2016-7-29
* 推送给所有APP的用户(官方给的demo)
* (这个没什么用,因为要分IOS和Android客户端推送的话,建议使用pushIGtMsgL())
* */
function pushMessageToApp(){
$template = $this -> IGtNotificationTemplateDemo();
//基于应用消息体
$message = new IGtAppMessage();
$message -> set_isOffline(true);
$message -> set_offlineExpireTime(10 * 60 * 1000);//离线时间单位为毫秒,例,两个小时离线为3600*1000*2
$message -> set_data($template);
$appIdList=array($this -> appId);
$message->set_appIdList($appIdList);
$rep = $this -> igt-> pushMessageToApp($message);
var_dump($rep);
echo ("
");
}
//消息模版:
// 1.TransmissionTemplate:透传功能模板
// 2.LinkTemplate:通知打开链接功能模板
// 3.NotificationTemplate:通知透传功能模板
// 4.NotyPopLoadTemplate:通知弹框下载功能模板
/**
* 2016-7-29
* 3.NotificationTemplate:通知透传功能模板
* param1 : ['title' => "通知标题",'content' => "通知内容" , 'payload' => "通知去干嘛这里可以自定义"]
* */
function IGtNotificationTemplateDemo($data){
$template = new IGtNotificationTemplate();
$te