iPhoneでIMEIを取得する方法は?
-
05-07-2019 - |
質問
iPhoneでIMEIを入手したい。次のコードを使用しようとしています:
#import "Message/NetworkController.h"
NetworkController *ntc=[[NetworkController sharedInstance] autorelease];
NSString *imeistring = [ntc IMEI];
ただし、NetworkControllerが見つかりません。
次を使用してuniqueIdentifierを取得できることもわかりました:
UIDevice *myDevice = [UIDevice currentDevice];
NSString *identifier = myDevice.uniqueIdentifier;
しかし、これはIMEIの取得に役立ちません。
IMEIをiPhoneで入手する方法
解決
iPhoneでIMEIを入手することはできなくなりました。代わりにUDIDを使用する必要がある場合があります。他の回答をご覧ください。
以前は、ヘッダーファイル" Message / NetworkController.h"を使用できました。 ericasadun.comに投稿されました。 http://ericasadun.com/iPhoneDocs300/_network_controller_8h-source.html 今すぐ削除)
NetworkController.hファイルとプライベートフレームワーク" Message.framework"を追加します。プロジェクトに追加し、そのヘッダーファイルをインポートして、私が見つけた元の方法を使用してimei番号を取得します。
NetworkController *ntc = [NetworkController sharedInstance];
NSString *imeistring = [ntc IMEI];
そのハックはもう機能しません。アプリはAppleによって拒否されます。
他のヒント
iPhoneでIMEIをプログラムで見つけることができません。
それを取得する公式の方法はありませんが、Appleのプライベートフレームワーク CoreTelephony.framework
には、役立つ可能性のあるメソッド CTGetIMEI
があります。
これを簡単に行うことができない理由があると確信しています。自動ロック解除アプリ?そうは思いません。 AppleとAT& Tもあまり好きではないと思う。
*#06#は、手動で取得する方法です。
stackoverflowでのみここで検索しましたが、結論は、AppleがiOS 6以降の電話EMEIの検索を許可しないことです。
UDIDを使用してデバイスを識別できます。 ここで私の答えを見つけました https://stackoverflow.com/a/19927376/2283308
ヘッドファイルを追加" CoreTelephony.h"プロジェクトへ
CoreTelephony.h
struct CTServerConnection
{
int a;
int b;
CFMachPortRef myport;
int c;
int d;
int e;
int f;
int g;
int h;
int i;
};
struct CTResult
{
int flag;
int a;
};
struct CTServerConnection * _CTServerConnectionCreate(CFAllocatorRef, void *, int *);
void _CTServerConnectionCopyMobileIdentity(struct CTResult *, struct CTServerConnection *, NSString **);
次のコードをクラスに追加します
#import "CoreTelephony.h"
struct CTServerConnection *sc=NULL;
struct CTResult result;
void callback() { }
今、簡単にimeiを入手できます
NSString *imei;
_CTServerConnectionCopyMobileIdentity(&result, sc, &imei);