2013年12月8日 星期日

Google API - QR Code

一直對web的開發很有興趣,可惜沒有真正參與過任何有趣的專案,不過寫手機APP常常會需要用些web的方法,剛好可以補充一下web的知識!

今天上班聽到老闆叫我寫一個QR code的產生器,當下第一個反應~GG!沒碰過,還好老闆接下來說,你可以使用Google API來產生!X!估狗也太屌惹吧,怎麼能夠想到這麼方便的事,索性搜尋了一下,天啊!也太簡單使用了,所以決定要在網誌上記下來,日後方便查閱!!

首先共有五個的參數(參考官網:QR code API),不過最後一個參數根據官網的資訊,好像跟QR code本身encode的方式有關,不是很懂,好在該參數不一定要設定,所以就都先用default吧!

1. 格式如下:

https://chart.googleapis.com/chart?cht=qr&chs=width x height&chl=data&choe=output_encoding
2. 簡單的example:
http://chart.apis.google.com/chart?cht=qr&chs=360x360&chl="Hello Wold"

上面的網址就可以產生一個簡單的Hello World QR code!!

3. 如果data為URL且帶兩個以上的參數,直覺上會使用

http://chart.apis.google.com/chart?cht=qr&chs=360x360&chl=http://www.leaderg.com/mysng/live?s=ker&p=ker

但是上面的網址會造成只吃到第一個參數,無法吃到第二個參數,怎辦,好在Google大神又解救我一次,只要去查"&"的Unicode table,可以知道&的Unicode unmber為26所以將上面的網址改成

http://chart.apis.google.com/chart?cht=qr&chs=360x360&chl=http://www.leaderg.com/mysng/live?s=ker%26p=ker

就可以帶兩個以上的參數惹!

4. 身為專業的APP開發者,最後放上Objective C使用Google API的template:(OSX版本)

- (IBAction)QRCodeAction:(id)sender {
    
    
    NSLog(@"robot sn = %@",[[NSUserDefaults standardUserDefaults] objectForKey:@"robotSn"]);
    NSMutableString *QRCodeUrl = [NSMutableString stringWithFormat:@"http://chart.apis.google.com/chart?cht=qr&chs=360x360"];
    [QRCodeUrl appendFormat:@"&chl=http://www.leaderg.com/mysng/live"];
    
    NSMutableString *parameter = [NSMutableString stringWithFormat:@"?s=%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"robotSn"]];
    [parameter appendString:@"%26"];
    [parameter appendFormat:@"p=%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"share"]];
    
    [QRCodeUrl appendString:parameter];
    [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:QRCodeUrl]];
    
}

Reference:

  1. 利用 Google Chart API 來產生 QRCode
  2. Google Chart Tools: Infographics

沒有留言:

張貼留言