Unity3d 在 iOS 上推送( push notification ) 编写

div#cpmenu {height:200px;float:left;}
div#cpcontent {height:200px;width:150px;float:left;}

文章作者:松阳

原文链接:http://blog.csdn.net/fansongy/article/details/43954515


配置证书

先按照这个生成一大堆证书 http://www.cnblogs.com/gpwzw/archive/2012/03/31/apple_push_notification_services_tutorial_part_1-2.html

其中输入的命令有些错误,可以参考 http://www.tuicool.com/articles/vy2MbmZ

openssl x509 -in aps_development.cer -inform der -out PushChatCert.pem
openssl pkcs12 -nocerts -out PushChatKey.pem -in PushChatKey.p12
cat PushChatCert.pem PushChatKey.pem > ck.pem

配置好证书后,在UnityAppController.mm中的 didFinishLaunchingWithOptions函数添加:

    #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000
        if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) {
            // use registerUserNotificationSettings
            [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];

            [application registerForRemoteNotifications];
        } else {
            // use registerForRemoteNotifications
            [application registerForRemoteNotificationTypes:
             (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)];
        }
    #else
        // use registerForRemoteNotifications
        [application registerForRemoteNotificationTypes:
         (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)];
    #endif

这样就完成了对注册的配置,对于Unity3d自带的注册,应该是不兼容IOS8系统

	function Start() {
			NotificationServices.RegisterForRemoteNotificationTypes(RemoteNotificationType.Alert |
										RemoteNotificationType.Badge |
										RemoteNotificationType.Sound);
		}
	function Update () {
		if (!tokenSent) {
			var token : byte[] = NotificationServices.deviceToken;
			if (token != null) {
				// send token to a provider
				var hexToken : String = "%" + System.BitConverter.ToString(token).Replace(‘-‘, ‘%‘);
				new WWW("http://"+address+"/?token="+hexToken);
				tokenSent = true;
			}
		}
	}

如果使用Unity3d可以在didRegisterForRemoteNotificationsWithDeviceToken函数中加入

NSString *tokenStr = [[deviceToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];
tokenStr = [tokenStr stringByReplacingOccurrencesOfString:@" " withString:@""];
UnitySendMessage("Bridge", "onPushID",tokenStr.UTF8String);
另外就是使用update来处理token也是不可行的。

获取token成功后,更改didRegisterForRemoteNotificationsWithDeviceToken函数,添加一个消息发送回unity3D,将结果发送给服务器。 我觉得可以使用一个单例,把整个这一套东西抽象出来,回头有功夫整理一下。

如果你觉得这篇文章对你有帮助,可以顺手点个顶,不但不会喜当爹,还能让更多人能看到它... 

时间: 2024-10-07 01:49:57

Unity3d 在 iOS 上推送( push notification ) 编写的相关文章

iOS 8 Apple Push Notification Service

Apple Configuration 1. create Apple ID in Apple Developer Website 2. check on "Push Notification" in the functionality 3. configure for Push Notification in Development: create certificate 3.1 upload the certificate file which is generated by ke

Push Notification Doc

Baidu Push Notification Service http://push.baidu.com/doc/ios/api Google Push Notification Service https://docs.pushio.com/API_&_cURL_Information/Platform_Specific_Payloads/GCM_%28Google_Cloud_Messaging%29 Apple Push Notification Service https://deve

iOS上简单推送通知(Push Notification)的实现

http://blog.csdn.net/daydreamingboy/article/details/7977098 iOS上简单推送通知(Push Notification)的实现 根据这篇很好的教程(http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12),结合自己的实践,写下一点笔记,仅供参考:) 由于篇幅较长,我列出简单的目录,如下 1) 理解Apple推送通知的机制 2)

iOS推送通知(Push Notification)的Erlang实现

本文来自:瑞仙的Erlang开发博客 原文链接:http://blog.csdn.net/zhongruixian/article/details/39528765 一.前言 关于cer/pem证书转换,网上很多资料,我这就不说了, 网上有PHP实现的Push Notification,可以参考, 为了更好的做PUSH服务定制,我这里以Erlang(gen_server)实现iOS Push Notification 二.协议 1.协议分析 表1 名称 长度 描述 Command 1 字节 固定

iOS开发中通知(Notification)快速入门及推送通知实现教程

iOS开发中通知(Notification)快速入门及推送通知实现教程 标签: NSNotificationCenterNSNotification 2016-11-14 00:18 232人阅读 评论(0) 收藏 举报  分类: iOS(400)  转载自:http://www.111cn.NET/sj/ios8/90190.htm 通知(Notification)是开发框架中观察者模式的一种实现方式,内部的实现机制由Cocoa框架支持,通常用于试图控制器和数据模型的交互.通过通知,可以向一个

IOS推送功能push

笔记:ios推送功能 推送可实时提醒用户你想要让客户端用户知道的信息,那怕用户并没有开启这个应用.应用场景很广泛,如淘宝应用:在你使用淘宝客户端的时候,假如你拍的东西发货了,如果没有推送功能,你不会及时知道你拍下的东西已经发货.但使用了推送后,淘宝就会发送一条推送通知,告知使用客户端App的你,你拍下的东西已经发货.使用推送的场景很多,在用户的体验度上更人性. 苹果的推送机制(APNS)咯(ps:其实每一篇教程都有),先来看一张苹果官方对其推送做出解释的概要图. Provider是给你手机应用发

iOS开发之远程推送Push

远程推送通知 什么是远程推送通知 顾名思义,就是从远程服务器推送给客户端的通知(需要联网)远程推送服务,又称为APNs(Apple Push Notification Services) 为什么需要远程推送通知 传统获取数据的局限性 只要用户关闭了app,就无法跟app的服务器沟通,无法从服务器上获得最新的数据内容 远程推送通知可以解决以上问题 不管用户打开还是关闭app,只要联网了,都能接收到服务器推送的远程通知 远程推送通知使用须知 所有的苹果设备,在联网状态下,都会与苹果的服务器建立长连接

IOS 提交审核,遇到Missing Push Notification Entitlement 问题。

貌似不影响提交........还是有人提交成了. 昨天晚上提交软件审核,遇到了Missing Push Notification Entitlement 的问题. 问题起因:这个版本我添加了PUSH推送功能,然后上传软件后,就提示Missing Push Notification Entitlement. 解决办法:我重新生成了一下Distribution 的provisioning 证书,然后重新提交了一下就OK了. 问题原因:我以前上传了一个版本,没有PUSH功能,第二个版本添加PUSH后,

Android Push Notification实现信息推送使用

本贴在http://www.cnblogs.com/hanyonglu/archive/2012/03/16/2399655.html下略为改动. Apndroid Push Notification的特点:  快速集成:提供一种比C2DM更加快捷的使用方式,避免各种限制. 无需架设服务器:通过使用"云服务",减少额外服务器负担. 可以同时推送消息到网站页面,android 手机 耗电少,占用流量少. 具体配置过程:  首先, 我们需要下载androidpn-client-0.5.0.