2013年1月28日 星期一

iOS 推播流程整理

先去 developer 開啟 app-id 的推播

更新 provisioning,不然會有 找不到應用程式ID或授權的錯誤

程式內

開啟後執行

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert];

}

使用者開啟時就會出現註冊推播警告視窗,下面這各是申請更多權限

[[UIApplication sharedApplication]

registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert |

UIRemoteNotificationTypeBadge |

UIRemoteNotificationTypeSound)];

若使用者不同意,執行(並於每次開機後執行?)

- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err{

若使用者同意後,執行(並於每次開機後執行)

- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {

以下是接收 push 訊息

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

{

2013年1月19日 星期六

Mac 網頁動畫製作軟體小評

目前比較熟知的動畫製作有

Hype

Sencha Animator

MotionComposer

其中,Hype 主打 JS 控制

Sencha 使用 CSS 控制

MotionConposer 號稱可以產生 Flash 或 HTML5

但是因為 Demo 版不能輸出,所以測試不出來

在可操作屬性方面,Hype 最強

Sencha 次之

MotionComposer 提供的最少

UI/上手方面

Motion Composer > Hype = Sencha

MotionComposer 的 Stage 設計太清楚易懂了

相較之下,Hype 的添加場景功能很容易令人混淆

感覺跟我之前使用 Flash 時的感覺類似

也許是基於 Flash 的邏輯?

Sencha 的 UI 比 Hype 稍微容易上手

不過一來我不太熟 CSS 的動畫操作邏輯

二來,他的旋轉物件功能讓我處理的很沮喪

所以判斷上手容易度類似

2013年1月18日 星期五

一個簡單的 QR 掃描過程 UX 研究

這是一開始/一般的 QR 掃描流程想法

PastedGraphic8-2013-01-19-13-25.png

這是為了避免使用者拿 app 亂掃得到錯誤資訊的作法

PastedGraphic4-2013-01-19-13-25.png

可是這有個問題,在不同程式上製作的條碼不同

ex 門市使用只有數字的二維條碼,機器也只讀取數字,要修改協定變得很費工、花費資源

顯然就不可能處理..

所以就修改成以下作法

PastedGraphic9-2013-01-19-13-25.png

這個作法相對完整

只是需要把搜尋資訊方法做成 API 以及處理搜尋期間的等待行為(萬一網路很慢的話..

cocoa 取得 webview cookie

在 iOS app 中

可以使用 NSHTTPCookie 取得 同一 app 中 webview 的 cookie 值

NSHTTPCookie *cookie;

NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage];

for (cookie in [cookieJar cookies]) {

NSLog(@"%@", cookie);

}

其他方法

NSMutableString *cDesc = [[[NSMutableString alloc] init] autorelease];

[cDesc appendString:@"[NSHTTPCookie]\n"];

[cDesc appendFormat:@" name = %@\n", [[cookie name] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

[cDesc appendFormat:@" value = %@\n", [[cookie value] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

[cDesc appendFormat:@" domain = %@\n", [cookie domain]];

[cDesc appendFormat:@" path = %@\n", [cookie path]];

[cDesc appendFormat:@" expiresDate = %@\n", [cookie expiresDate]];

[cDesc appendFormat:@" sessionOnly = %d\n", [cookie isSessionOnly]];

[cDesc appendFormat:@" secure = %d\n", [cookie isSecure]];

[cDesc appendFormat:@" comment = %@\n", [cookie comment]];

[cDesc appendFormat:@" commentURL = %@\n", [cookie commentURL]];

[cDesc appendFormat:@" version = %@\n", [cookie version]];

實作時,value 可能會有 %00

可以用 [nsstring componentsSeparatedByString:@“%00”] 方法分割陣列

然後用 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 還原數值

2013年1月16日 星期三

使用 EdgeInsets 建立按鈕側邊底圖

使用了 EdgeInsets 建立這樣的一個按鈕

PastedGraphic-2013-01-16-19-34.png

基本作法是先上圖

[btn_store setImage:[UIImage imageNamed:@"arrow.png"] forState:UIControlStateNormal];

然後設定圖片的 Insets, 把圖擠到右邊

[btn_store setImageEdgeInsets:UIEdgeInsetsMake(0,130,0,0)];

不過這時候會發現 title 被擠到左邊

所以就把title labe 拉回來一點

(這一點我覺得不太對勁,應該要有比以下更好的作法

btn_store.titleEdgeInsets=UIEdgeInsetsMake(0, -40, 0, 40);

2013年1月14日 星期一

iOS 0xE8008016 錯誤

這是一個很爛的錯誤說明

The entitlements specified in your application’s Code Signing Entitlements file do not match those specified in your provisioning profile.

這問題發生在我新增了一台 iPad 測試,修正 storyboard for ipad 設定後

看到這個錯誤後,我理所當然的以為是某個設定被動到了(雖然我很確定我沒動過 Entitlements 檔案

網路上主要的解決作法是建議新增/建立 entitlement 檔案,加入 get-task-allow = YES

不過這作法對我不適用

後來檢查了一下,發現有一種說法是裝置沒有加入 provisioning (可是我記得我有add to portal?

去 portal 檢查了一下之後,才發現原來 device 只被加入到舊的 provisoning 中(不知道判斷邏輯是啥..

重新加入目前使用的 provisioning 後就解決了

同場加映:另一個奇葩解法 (CodeSignError:ProvisioningProfile 487F3EAC-05FB-4A2A-9EA0-31F1F35760EB can't be found

http://blog.csdn.net/zzfsuiye/article/details/7310266

iOS App 在 iPad 1, new iPad 上閃退

今天碰到一個詭異的問題

目前開發的 app 並沒有 iPad 專屬介面

所以在前端設定成使用 iphone 介面

在 ipad 2 上測試時沒有問題

但是在 new iPad 和 iPad 1 測試時,一直閃退

今天拿到實機後,測試時發現裝置會嘗試讀取 iPad 的 storyborad 檔案..

但是這檔案根本沒有在用..

檢查了一下,發現 MainStoryboard_iPad 出現在一個欄位中

修改後就沒有問題了

PastedGraphic1-2013-01-15-08-54.png

同場加映:

另外一個可能的原因是 storyboard 的 auto layout 選項沒有取消

2013年1月4日 星期五

ViewController dealloced

前幾天寫程式時

因為多了一個功能,決定把本來用程式碼製作 VC 的部份重組出來作為單一 VC 檔案

不過重新引用時一直出現問題..

出現的錯誤訊息是 VC performselector: deallocd

後來發現是因為本來是使用

UIView* vv= childVC.view

[parent addsubview:view]

改成

[parent addsubview:childvc.view]就ok了

這應該是所有權的問題所導致