小米推送Unity接入指南

目录

 

1. Android版推送接入指南

1.1. 快速接入步骤

  1. 将MiPush.unitypackage导入到unity项目中。
  2. 将Plugins/Android下的manifest文件中的package name改成自己工程的包名。
    <permission android:name="com.xiaomi.unitypush.permission.MIPUSH_RECEIVE" android:protectionLevel="signature"/>
    <uses-permission android:name="com.xiaomi.unitypush.permission.MIPUSH_RECEIVE"/>
    

    将其中的的com.xiaomi.unitypush替换成自己的包名。

  3. 在Unity3d游戏场景中,新建一个空的 Gameobject,将其名称修改为MiPushBinding,将使用推送的脚本挂载到这个GameObject上。
  4. 使用推送的脚本要实现recvMessage(string s)方法,用来接收推送的信息。详细的推送消息的格式见下节。

注:在 Plugins\Android\src 目录下是一些 java 文件,可以将其引入到 android 工程中对它们进行扩展。重新生成jar替换掉 unity工程中 Assets\Plugins\Android\bin 目录下的 myclass.jar
文件。

1.2. 接收到的消息格式

sdk会将接收到的消息以json格式发送给MiPushBinding对象挂载的脚本。其中包含两类信息,一种是服务器推送的消息;一种是当客户端向服务器发送注册、设置alias、订阅topic等命令后,从服务器返回结果。

服务器推送消息的json数据格式为:

{
	alias:"xx"
	category:"xx"
	content:"xx"
	description:"xx"
	messageId:"xx"
	title:"xx"
	topic:"xx"
	messageType:"xx"
	notifyId:"xx"
	notifyType:"xx"
	passThrough:"xx"
}

表 1. 推送消息数据描述

参数名 功能说明
alias 推送消息时设置的alias,如果是regId消息或者topic消息,此字段为空。
content 消息的内容(payload)。
description 消息描述,弹出通知栏通知使用。
messageId 消息Id
title 消息的标题,弹出通知栏通知时使用。
topic 推送消息时设置的topic,如果不是topic消息,次字段为空。
messageType 消息类型,0表示使用regId推送的消息,1表示使用alias推送的消息,2表示使用topic推送的消息。
notifyId 推送消息的id,弹出通知时的Id,相同Id的通知栏消息会互相覆盖。
notifyType 消息的提醒方式,如震动、响铃和闪灯。
passThrough 如果值为1,表示透传消息;如果值为0,表示通知栏消息。

 

命令消息的json数据格式为:

 {
	command:"xx"
	resultCode:"xx"
	reason:"xx"
	arguments:[]
}

表 2. 命令消息数据描述

参数名 功能说明
command command表示命令的类型。 如果调用registerPush(),则返回register。
如果调用setAlias(),则返回set-alias。 如果调用unsetAlias(),则返回unset-alias。
如果调用subscribe(),则返回subscribe-topic。
如果调用unsubscribe(),则返回unsubscribe-topic。
如果调用setAcceptTime(),则返回accept-time。 如果调用pausePush(),则返回accept-time。
如果调用resumePush(),则返回accept-time。
resultCode resultCode 表示调用命令的结果。如果成功,返回ErrorCode.Sussess即0;否则返回错误类型值。
reason reason表示调用命令失败的原因。如果失败,则返回失败原因,否则返回为null。
arguments arguments 表示命令的参数。arguments是一个JsonArray里边有参数信息。例如:
注册app就会返回app本次初始化所对应MiPush推送服务的唯一标识regId,alias就会返回alias的内容,订阅和取消订阅主题就会返回topic,setAcceptTime就会返回时间段。

 

1.3. API说明

Plugins文件夹下的MiPush.cs封装了推送的方法。

表 3. API说明

API 功能
registerPush(string appId,string appKey) 注册MiPush推送服务,建议在app启动的时候调用。
unregisterPush() 关闭MiPush推送服务,当用户希望不再使用MiPush推送服务的时候调用,调用成功之后,app将不会接收到任何MiPush服务推送的数据,直到下一次调用registerPush
()。
setAlias(string alias) 开发者可以为指定用户设置别名,然后给这个别名推送消息,效果等同于给RegId推送消息。注: 一个RegId可以被设置多个别名,如果设置的别名已经存在,会覆盖掉之前的别名。
unsetAlias(string alias) 开发者可以取消指定用户的某个别名,服务器就不会给这个别名推送消息了。
subscribe(string topic) 为某个用户设置订阅主题;根据用户订阅的不同主题,开发者可以根据订阅的主题实现分组群发。
unsubscribe(string topic) 为某个用户取消某个订阅主题。
pausePush() 暂停接收MiPush服务推送的消息,app在恢复MiPush推送服务之前,不接收任何推送消息注: 这里使用与RegId相关联的alias和topic推送消息,也是被暂停的
resumePush() 恢复接收MiPush服务推送的消息注: 这里使用与RegId相关联的alias和topic推送消息,也是被恢复的;这时服务器会把暂停时期的推送消息重新推送过来
setAcceptTime(int startHour,int startMin,int endHour,int endMin) 设置接收MiPush服务推送的时段,不在该时段的推送消息会被缓存起来,到了合适的时段再向app推送原先被缓存的消息。这里采用24小时制,如果开始时间早于结束时间,则这个时段落在一天内;否则,这个时间将会跨越凌晨0点。注:
这里使用与regId相关联的alias和topic推送消息,也会受到限制。如果时间设置为0:00-0:00,就是暂停push推送服务,也可以直接调用pausePush()方法,其本质相同如果时间设置为0:00-23:59,就是恢复push推送服务,即全天接收push推送消息,也可以直接调用resumePush()方法,其本质相同
reportMessageClicked(string msgid) 上报点击的消息。
checkManifest() 客户端在接入本SDK时,通过调用该API来检查AndroidManifest.xml是否正确声明了本SDK要求的所有组件和权限。当有组件和权限未定义,或者组件的属性声明错误时,该API抛出异常MiPushClient.IllegalManifestException。
clearNotification() 清除小米推送弹出的所有通知。
clearNotification(int notifyId) 清除小米推送弹出的某一个notifyId通知。
setLocalNotificationType(int type) 客户端设置通知消息的提醒类型。注:当服务端指定了消息的提醒类型,会优选考虑客户端设置的。
clearLocalNotificationType() 清除客户端设置的通知消息提醒类型。
getRegId() 获取客户端的RegId。
getAllAlias() 获取客户端所有设置的别名。
getAllTopic() 获取客户端所有订阅的主题。

 

2. IOS版推送接入指南

  1. 在Unity3d游戏场景中,新建一个空的 Gameobject, 将其名称修改为MiPush,挂载 MiPush.cs
  2. 生成ios工程,并打开该工程
  3. 引入库 libz.dylib,MobileCoreServices.framework,CoreTelephony.framework (如果已经引入,请忽略)
  4. 打开工程下资源文件Info.plist 加入MiSDKAppID MiSDKAppKey MiSDKRun 等信息
  5. 找到 xcode 工程 Libraries 文件夹的 MiPushSDK.h,拖入工程中
  6. 在 UnityAppController.mm 中添加头文件
    #import “MiPushSDK.h”
    - (void)application:(UIApplication )application didRegisterForRemoteNotificationsWithDeviceToken:(NSData )deviceToken
    { [MiPushSDK bindDeviceToken:deviceToken]; }

push&米币支付SDK接入 徐泽伟
xuzewei@xiaomi.com   qq:1145278810
如对小米推送有任何技术问题,请通过推送客服系统与我们联系http://dev.xiaomi.com/mipush/feedback/fe/