ysukharenko: (Default)
Yevgen Sukharenko ([personal profile] ysukharenko) wrote2012-09-27 11:14 pm

Passbook as QR Code Business Card

С выходом iOS 6 появилась замечательная тулза – Passbook. Пока еще немного софта, который ее поддерживает, однако данные в нее можно загонять и самостоятельно. Одно из применений которое я нашел – собственная визитка в виде QR-кода.

Выглядит вот так:

Passbook Business Card Sample

А дальше технические детали для желающих сделать себе такое же и имеющих доступ к Apple Developer Program.
Остальным под кат можно не лазить ибо будет очень много технической информации.

Для создания собственной карточки нам потребуется:

  1. Mac
  2. Общее понимание как компилить код в XCode
  3. Понимание как работать в shell (terminal)
  4. Доступ к Apple Developer Program (iOS)
  5. Прямые руки

Итак, приступим…

1) Идем в Provisioning Portal и создаем новый pass (его ID будет использовано дальше). Там же читаем инструкцию и генерируем сертификат, который скачиваем и укладываем в Keychain. Там все просто.

2) Там же в разделе документации находим Passbook starting kit – в нем будет XCode Project с названием signpass. Качаем, собираем, копируем тулзу в /usr/local/bin (она будет shell-based).

3) Качаем файлик: http://cl.ly/JnFN – это PSD-шаблон для иконок. Открываем, вставляем собственную фотку или логотип и експортим слайсы (4 штуки). Они уже поименованы как надо.

4) Создаем где-нить фолдер с именем типа JohnSmith.raw

5) Складываем наши иконки (icon.png, icon@2x.png, logo.png, logo@2x.png) в этот фолдер.

6) Там же создаем файлик с именем pass.json (именно такое имя и никакое другое). В него вставляем примерно следующее:

{
  "formatVersion" : 1,
  "passTypeIdentifier" : "pass.com.yourname",
  "serialNumber" : "BusinessCard1",
  "teamIdentifier" : "A1B2C3D4",
  "barcode" : {
    "message" : "BEGIN:VCARD\nVERSION:3.0\nN:Smith;John;;;\nFN:John Smith\nTITLE:Developer\nEMAIL;type=INTERNET;type=WORK:john@smith.com\nTEL;type=CELL;type=VOICE;type=pref:+14165551234\nURL;type=pref:http:\/\/apple.com\/\nBDAY:1980-01-01\nIMPP;X-SERVICE-TYPE=Skype;type=HOME:skype:skype_user_name\nEND:VCARD",
    "format" : "PKBarcodeFormatQR",
    "messageEncoding" : "iso-8859-1"
  },
  "organizationName" : "John Smith",
  "description" : "Business Card",
  "logoText" : "John Smith",
  "foregroundColor" : "rgb(255, 255, 255)",
  "backgroundColor" : "rgb(100, 0, 0)",
  "generic" : {
    "primaryFields" : [
      {
        "key" : "member",
        "value" : "John Smith"
      }
    ],
    "secondaryFields" : [
      {
        "key" : "subtitle",
        "label" : "Phone",
        "value" : "+1 (416) 555-1234"
      }
    ],
    "auxiliaryFields" : [
      {
        "key" : "level",
        "label" : "E-Mail",
        "value" : "john@smith.com"
      },
      {
        "key" : "favorite",
        "label" : "Website",
        "value" : "http://apple.com",
        "textAlignment" : "PKTextAlignmentRight"
      }
    ],
    "backFields" : [
      {
        "key" : "website",
        "label" : "Website",
        "value" : "http://apple.com"
      },
      {
        "dateStyle" : "PKDateStyleShort",
        "label" : "Birthday",
        "key" : "birthday",
        "value" : "1980-01-01T10:00:00+03:00"
      }
    ]
  }
}

Особо обратите внимание на следующие поля:

passTypeIdentifier – тут ID pass’а который прописан в Provision Portal
serialNumber – любая фигня типа Card1
teamIdentifier – при регистрации в Apple Dev Program будет выдано это значение. Оно же будет в сертификате.
message – тут будет наша VCard

И еще там есть другие поля которые отвечают за текст на карточке и цвета – подстраиваем на свое усмотрение.

7) Создаем файлик типа user.vcf и вставляем в него следующее (сделав соответствующие изменения для себя – эти данные и будут в QR-коде:

BEGIN:VCARD
VERSION:3.0
N:Smith;John;;;
FN:John Smith
TITLE:Developer
EMAIL;type=INTERNET;type=WORK:john@smith.com
TEL;type=CELL;type=VOICE;type=pref:+14165551234
URL;type=pref:http://apple.com/
BDAY:1980-01-01
IMPP;X-SERVICE-TYPE=Skype;type=HOME:skype:skype_user_name
END:VCARD

Если чего-то у вас нету – просто удаляем строчку. Так же имеем ввиду, что размер QR-кода там лимитирован и очень много инфы (вроде фотки) в него не запихнуть. Поэтому аккуратнее.

8) Создаем малюсенький PHP скрипт:

#!/usr/bin/php
<?
	$c = file_get_contents("user.vcf");
	$j = array('data' => $c);
	print json_encode($j) . "\n";
?>

Запускаем, и copy/paste той части где наш VCF-файл будет корректно зажат в одну строчку.

9) То что мы получили из п.8 копируем в файл pass.json в переменную message.

10) Из шелла запускаем:

# signpass -p JohnSmith.raw/

На выходе будет файлик JohnSmith.pkpass – это и есть искомый Passbook. Double-click покажет preview карточки, там же будет кнопка “Add to Passbook” – у меня сразу синхронизировалось с iPhone. Если не поможет или надо на другой телефон отправить – просто шлем по почте.

11) Profit!

12) Использовать очень просто – показываем наш QR-код, который человек которому надо передать карточку сканирует каким-то QR-code reader’ом.

P.S. На случай, если у вас нету доступа к Apple Developer Program но есть у ваших друзей – их вполне можно попросить подписать ваш Pass.


Originally published at Scorp.ca

Хуйня какаято

[identity profile] r0land.livejournal.com 2012-09-28 07:49 am (UTC)(link)
Вы что, до сих пор пользуетесь iPhone-ом?

Re: Хуйня какаято

[identity profile] sukharenko.livejournal.com 2012-09-28 03:50 pm (UTC)(link)
Да и только ним. У меня даже 5-й уже. Ибо альтернатив нету. Ведроид неюзабелен.

Re: Хуйня какаято

[identity profile] r0land.livejournal.com 2012-09-28 05:25 pm (UTC)(link)
Гыы! Сравнивал Galaxy Note с 4S. iPhone - просто дурацкая бирюлька. Ничего не умеет.
Use case - сливаю по WiFi c камеры RAW, редактирую в фотошопе, отправляю по синезубу желающему.
Записал от руки (!), надиктовал на русском (!) языке заметки на встрече, оформил в PDF, отправил по почте.
Виджеты.
Переслать рингтон по синезубу блять ;-)