iOS 個体識別番号(UIDI)は使えません。

日本のモバイル開発現場で活躍してくれた個体識別番号は、ユーザーも便利でしたが開発者も便利でした。しかーし、世界の流れはNOです。

と、いうことで別の方法を考えます。

解決策

色々方法はあるようですが、UUIDを使うことにします。UUIDはユニークであることが保証されているそうです。

  1. 初回起動時UUID生成、Keychainに保存
  2. 2回目以降起動時は、Keychainから呼び出す
  3. あとは、WEBサービスへの認証にUUIDを個体識別番号のように使用する

個体識別番号を書き換えられる脱獄アプリもあるそうです。個体識別番号同様、送信されたUUIDを100%信用しちゃうような設計はしないように気をつけないと。

ヒント

Keychain Service とのやり取りは、LUKeychainAccess が便利です。

 

AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    //UUID
    self.uuid = [[LUKeychainAccess standardKeychainAccess] objectForKey:@"uuid"];
    if(!self.uuid){
        //読み込めなかった場合、UUIDを作成してKeyChainに保存
        CFUUIDRef   uuid = CFUUIDCreate(NULL);
        self.uuid = (__bridge NSString *)CFUUIDCreateString(NULL, uuid);
        CFRelease(uuid);
        [[LUKeychainAccess standardKeychainAccess] setObject:self.uuid forKey:@"uuid"];
    }
    return YES;
}

 

iPhone / iPad アプリの配布方法

アプリの配布は、主に、次のいずれかの方法で行います。詳しくはApple社のWEBサイトをご参照ください。

App Store

不特定多数の人へアプリを配布したい場合は、App Storeで無料配布または有料での販売になります。App Storeへの登録はApple社の審査があります。

iOS Developer Program

社内に配布する場合、または一部のユーザーのみに配布する場合、100台まで開発デバイスとして登録が可能で、これらのデバイスに対しAdHoc配信が可能です。USB接続で直接転送するか、メール等で受け取ったファイルをiTunes経由でインストールすることになります。

また、テスターへの配布は、TestFlightを利用するのが便利です。

iOS Developer Enterprise Program

iOS Developer Programのプログラム内容に加え、組織内の社員やスタッフへワイヤレスで配布することが可能です。そのため、アプリを最新の状態に保つことができます。

UIViewのFrame外に配置した子要素が表示されてしまう

UIViewに子要素を配置。サイズ変更ボタンでサイズ変更!

self.leftView.frame = CGRectMake(0,0,1024.0,120);

と思いきや…。Frame外に配置した子要素が表示されてしまっている…。
どうやら、デフォルトではFrame外の要素も画面サイズ内であれば表示されてしまうようです。

Interface builder で設定する場合は、3番目のタブ「Identity Inspector」の「User Defined Runtime Attributes」に「ClipsToBounds」をType=Booleanで追加しチェックを入れます。

コードから指定する場合は以下のとおりです。

[self.leftView setClipsToBounds: YES];