Thursday, November 8, 2012

Urban Airship Server API - Java客户端实例

今天在看Urban Airship的server端的API,Urban Airship官方网站上推荐了一个第三方的开源库http://bitbucket.org/sullis/urbanairship-java/,但是在经过简单测试后还是发现了一些问题,并且这个库好像也不是很活跃。为了看看Urban Airship的server端API怎么用,自己还是决定自己写个小程序试试看。


今天的测试由于涉及从Urban Airship向Android设备发送消息,所以这里假定已经有Android设备或者模拟器安装了可以接收消息的native app,具体步骤可以参考我的前一篇博客(http://blog.csdn.net/kongxx/article/details/8155916)。

下面开始今天的测试

1. 首先创建一个工程,这里还是使用maven来创建工程
mvn archetype:generate -DgroupId=urbanairship.server -DartifactId=urbanairship-server -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
2. 修改pom.xml文件如下
3. 创建一个测试类Test,注意替换其中的username, password和apid。
4. 测试,首先运行模拟器,然后运行可以接收message的android native app,最后运行上面的测试类,稍等片刻就会在设备或者模拟器上看到消息了。


Android Server Push Notification - Urban Airship


1. 首先在urbanairship注册一个帐户,他有免费帐户可用,试用45天。

2. 注册完之后,创建一个app,内容比较简单看着填就可以了。

3. 在app生成之后,进入属性修改页,将其中Android Package改成自己将要使用的工程包名。如果需要GCM支持,需要给urbanairship发邮件,一般很快就会批下来,我是第二天就批下来了。

4. 在urbanairship的下载页下载最新的开发包,这里我下载的是2.0.1版本。解压后用eclipse建立工程,选择PushSample目录导入工程。

5. 将其中的所有包名改成上面自己定义的包名(搜索一些,地方比较多)。

6. 需要注意的工程下有两个文件AndroidManifest.xml和AndroidManifest-Helium.xml,我们先使用Helium来测试,将原来的AndroidManifest.xml文件改名成AndroidManifest-GCM.xml,将AndroidManifest-Helium.xml改名成AndroidManifest.xml。

7. 修改assets/airshipconfig.properties文件,修改其中的
developmentAppKey 在app属性页可以看到
developmentAppSecret 在app属性页可以看到
transport = helium

8. 运行AVD和测试程序,这里我使用的是Android4.1.2 Google APIs的模拟器。注意在日志中查找APID,将其值记住,后面会用。然后选中应用程序的"Preferences"的"Push Enabled"复选框。

9. 在unbanairship中选择上面建立的app,并在左侧导航里选择"Push"->"APIDs"可以查看已经注册的设备。

10. 在"Push"->"Test Push Notification"->"Android",在表单的Apid里输出上面记住的APID,在alert里输入message,然后按发送按钮,此时就会在模拟器上看到结果了。

11. GCM支持
11.1 如果需要使用GCM支持(参考http://developer.android.com/guide/google/gcm/index.html),需要首先在http://code.google.com/apis/console建立一个project,并且将其中的Project ID填入unbanairship的app属性中。
11.2 改名AndroidManifest-GCM.xml成AndroidManifest.xml,修改assets/airshipconfig.properties文件,修改后内容如下,这里需要注意的是
developmentAppKey 在app属性页可以看到
developmentAppSecret 在app属性页可以看到
transport = gcm
gcmSender = <Project Id>  (在google apis console那里获取)
11.3 再次运行android程序,然后在unbanairship测试。

Saturday, November 3, 2012

GCM Demo "Unfortunately, GCM demo has stopped"


今天在学习Google Cloud Messaging (GCM),在运行文档上使用的例子(http://developer.android.com/guide/google/gcm/demo.html)的时候,按照步骤设置好server和client之后,运行server和client之后,在模拟器上运行GCM Demo的时候总是出现"Unfortunately, GCM demo has stopped"错误,检查了一下,需要修改的地方都按照文档上的说明改了,还是出错。最后发现原来是选择的AVD有问题,开始使用的是"Android 4.1.2 - API Level 16",后来我把AVD换成"Google APIs (Google Inc.) - API Level 16"再运行client,就不会再出现上面的问题了。

另外在测试的时候还发现一个问题,就是文档上给出了两种server选择,一种是“Using a standard web server”,在使用这种server选择的时候,按照文档上的说明配置client是可以运行的。但是如果使用“Using App Engine for Java”,需要将client中CommonUtilities.SERVER_URL改成“http://192.168.1.10:8080”,就是去掉其中的“/gcm-demo”,然后再运行,此时就可以通过“http://192.168.1.10:8080”来发送message了。

Friday, July 15, 2011

在CentOS6虚拟机上安装VirtualBox增强功能

1. 安装编译需要的库和头文件
yum install gcc -y
yum install kernel sources -y
yum install kernel-devel -y
2. 安装VirtualBox增强功能
3. 重新启动系统

安装Vertica数据库

1. 安装Vertica rpm包
2. 创建Vertica用户并设置密码
# useradd dbadmin -d /opt/dbadmin -b /opt/dbadmin
# passwd dbadmin
3. 安装Vertica数据库
# /opt/vertica/sbin/install_vertica -u dbadmin -l /opt/dbadmin -d /opt/dbadmin
4. 管理Vertica数据库。
首先以dbadmin用户登录系统
$ /opt/vertica/bin/admintools

Sunday, June 19, 2011

你,死定了!

  昨天傍晚带儿子出去玩,回家的时候路过烤肉摊,儿子想吃烤肉,于是乎我就带儿子找了个地方坐下了,要了几个烤鸡翅和一些烤肉,当然还有两瓶冰封没有王座,然后就是无止境的等......

  儿子:爸爸,我回去要告诉姥姥。

  爸爸:你告诉姥姥啥?

  儿子:我告诉姥姥你请我吃烤肉了。(姥姥一直反对我们老带他吃这些东西)

  爸爸:不会吧,你告诉姥姥我怎么办?

  儿子诡异的笑着说:你,死定了!

Wednesday, June 8, 2011

Create multipul vertica database with different port number

最近在用Vertica数据库,想同时启动多个数据库实例,但是在启动的时候发现所有数据库实例都是使用的同一个端口:5433,这样在同一时间就只能使用一个数据库实例,这对我来说用起来就有太多限制了。于是今天下午搞了半天总算发现Vertica的端口定义文件,对于不同的数据库实例定义不同的端口就可以解决上面的问题了。步骤如下:

1. Create multipul database instances through "admintools". For example: mydb1 and mydb2;
2. Shutdown all database instances through "admintools";
3. Change port number for database instances.
Backup ${VERTICA_TOP}/config/share/portinfo.dat file, and change port number for some database instances.
For example: mydb1 uses 5433, mydb2 uses 5444.
4. Restart verticad service
$ sudo /etc/init.d/verticad restart