iOS-電話がアプリをインストールしたかどうかを判断します



Ios Determine Whether Phone Installed App



方法1 1.すべてのアプリを携帯電話にインストールします 1.1.runtimeメソッドの、つまり#include1.2をインポートします。 AppDelegate.mファイル -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法:

クラスLSApplicationWorkspace_class =objc_getClass('LSApplicationWorkspace')



NSObject *ワークスペース= [LSApplicationWorkspace_classperformSelector:@selector(defaultWorkspace)]

NSArray * allApplications = [workspaceperformSelector:@selector(allApplications)]//お使いの携帯電話にインストールされているすべてのアプリにアクセスできるようにします



NSLog(@ 'デバイスにインストールされているすべてのアプリ:%@'、allApplications)

次のようなものを印刷します:app = com.apple.mobilesms.notification
app = com.apple.mobilesms.compose
app = com.apple.Fitness
app = com.apple.Home.HomeUIService
app = com.apple.StoreDemoViewService
app = com.apple.videos
2.電話にアプリがインストールされているかどうかを確認します これには、allApplicationsプロセスの一部を実行する必要があります。この配列は従来の文字列でインストールされていません。印刷結果からわかります。これは、LSApplicationProxyの一種であり、これを文字列に入れます。印刷結果、この文字列にはアプリのバンドルIDだけでなく、インストールパスも含まれます。パスは不確実であるだけでなく、アプリのインストールがこの文字列バンドルIDを判断するかどうかを判断するため、文字列処理を行う必要があります。

NSInteger zlConnt =0

ために (NSString * appStrallApplicationsで){



NSString* app = [NSStringstringWithFormat@ '%@'、appStr]//文字列に

Nsrange範囲= [アプリrangeOfString:@ 'org.ios.appprojuct.jqb']//バンドルIDが含まれています

if(範囲。長さ>1){

zlConnt ++

}

}

if(zlConnt> =1){

NSLog(@ 'すでにインストールされています')

}

上記の方法を使用して、まず最初にターゲットのアプリバンドルIDを知る必要があります。 CharlesバンドルIDの方法は、アプリのターゲットipaインストールパッケージである.ipaを.zipにダウンロードしてから、右に移動します-パッケージの内容を表示し、info.plistファイルを検索し、バンドル識別子の値に対応する検索値を開きます。これはバンドルIDです。 。

短所:この方法は特定のパフォーマンスを消費します(APP電話はより多くの単語をインストールします)、そこでのAPP監査は拒否される可能性があります

利点:canOpenURLのios9.0をスキップするこのAPIの使用制限

方法2

もし([[UIApplicationsharedApplication] canOpenURL:[NSURLURLWithString@ 'IOSDevApp://']]){

//この機器がインストールされているアプリの説明

}そうしないと{

//この機器の説明はインストールされていませんアプリ

}

この方法はシンプルで効率的ですが、前提の使用も、URLスキームがAPPアドバンスを対象としていることを知っている必要があります。このURLスキームは、URLタイプ配列の上記のバンドルID(info.plist)と同じように見えます。

同時に、欠点もあります。ios9より上のシステムでは、ホワイトリストを設定する必要があります。または、ターゲットAPPがインストールされている場合、2番目の方法でもNOが返されます。

ホワイトリスト設定モード:info.plistの追加(0と1はマイクロチャネルを示し、2はAlipayを示し、3はヘッドラインを示し、4は共有Alipayを示します)