我正在用Unity开发一款手机游戏,并将使用推送通知。我发现了仅适用于iOS的NotificationServices
类。但是我没有找到任何服务器端的代码示例。
我要求任何提供服务器和客户端代码的好例子或解决方案(Android客户端和Android和iOS的后端)。
我知道诸如pushwoosh之类的服务。它们不适用于我,因为我的公司有自己的游戏服务器,并希望从中发送通知
我想这不是什么独特的东西,应该有人已经这样做了。
谢谢。
你是对的,确实有人这么做了:)我是新Unity资产UTNotifications的开发人员之一。它可以满足你的所有需求,甚至更多。还请注意,没有一种单一的方法可以实现推送通知与任何安卓设备协同工作——有谷歌云消息(GCM),它仅与基于Google Play的设备协同工作,还有亚马逊设备消息(ADM)用于亚马逊设备。幸运的是,UTNotifications支持这两项服务,也支持iOS版的Apple推送通知服务(APNS)。它提供了完整的源代码,因此您可以调整任何您喜欢的内容。它还包括演示服务器源代码,因此您可以使用自己的服务器发送推送通知,而无需使用任何第三方服务。
更多信息:http://forum.unity3d.com/threads/released-utnotifications-professional-cross-platform-push-notifications-and-more.333045/
以下是一些代码示例。
例如,以下是如何初始化系统并将推送通知注册id发送到服务器:
public void Start()
{
UTNotifications.Manager notificationsManager = UTNotifications.Manager.Instance;
notificationsManager.OnSendRegistrationId += SendRegistrationId;
bool result = notificationsManager.Initialize(false);
Debug.Log("UTNotifications Initialize: " + result);
}
private void SendRegistrationId(string providerName, string registrationId)
{
StartCoroutine(_SendRegistrationId(providerName, registrationId));
}
private IEnumerator _SendRegistrationId(string providerName, string registrationId)
{
WWWForm wwwForm = new WWWForm();
wwwForm.AddField("provider", providerName);
wwwForm.AddField("id", registrationId);
WWW www = new WWW(m_webServerAddress + "/register", wwwForm);
yield return www;
if (www.error != null)
{
Debug.LogError(www.error);
}
}
这就是你请求演示服务器向Unity的每个注册设备发送推送通知的方式:
public IEnumerator NotifyAll(string title, string text)
{
title = WWW.EscapeURL(title);
text = WWW.EscapeURL(text);
WWW www = new WWW(m_webServerAddress + "/notify?title=" + title + "&text=" + text);
yield return www;
}
您还可以处理传入通知:
UTNotifications.Manager.Instance.OnNotificationsReceived += (receivedNotifications) =>
{
Debug.Log(receivedNotifications[0].userData["CustomMessage"]);
};
你可以用类似的语法做很多其他的事情。该资产包括SampleUI
类。这将对你有很大帮助。还有API参考(http://universal-tools.github.io/UTNotifications/html/annotated.html)以及详细的手册。