iPhoneへの設定プロファイルのインストール - プログラムによるもの
質問
iPhoneアプリケーションに構成プロファイルを同梱し、必要に応じてインストールしたいのですが。
プロビジョニングプロファイルではなく、コンフィギュレーションプロファイルについて話していることに注意してください。
まず第一に、そのようなタスクは可能です。Web ページに構成プロファイルを配置し、Safari からそれをクリックすると、インストールされます。この場合、quot; Installed" は、インストール UI が呼び出されることを意味しますが、私はそこまでできませんでした。
そこで私は、プロファイルのインストールを開始するには、URL としてプロファイルにナビゲートする必要があるという理論に基づいて作業していました。私はプロファイルをアプリ バンドルに追加しました。
A) まず、バンドルにfile://のURLを入れて[sharedApp openURL]を試しました。幸運はありません-何も起こりません。
B) 次に、プロファイルへのリンクを持つHTMLページをバンドルに追加し、UIWebViewにロードしました。リンクをクリックしても何も起こりません。しかし、SafariでWebサーバーから同じページをロードすると、リンクはクリック可能で、プロファイルがインストールされ、正常に動作します。私は UIWebViewDelegate を提供し、すべてのナビゲーション要求に YES と答えましたが、違いはありませんでした。
C) 次に、Safari で私のバンドルから同じ Web ページを読み込もうとしました([sharedApp openURL] を使用) - 何も起こりません。私は、Safari が私のアプリ バンドル内のファイルを見ることができないことを推測します。
D) ウェブサーバーにページとプロファイルをアップロードすることは可能ですが、組織レベルでは苦痛であり、言うまでもなく、失敗の余分なソースです (3G のカバレッジがない場合はどうなるか?など)。
そこで、私の大きな疑問があります。**プログラム的にプロファイルをインストールするにはどうしたらよいでしょうか。
そして小さな疑問は、UIWebView 内でリンクをクリックできないようにするにはどうしたらよいでしょうか。から file:// URL をロードすることは可能ですか? 私の を読み込むことはできますか?そうでない場合、iPhone のローカルな場所にファイルを置いて、Safari がそれを見つけることができるようにすることはできますか?
B)のEDITです。 問題は、プロファイルにリンクしているという事実のどこかにあります。私はそれを .mobileconfig から .xml にリネームし (それは本当に XML であるので)、リンクを変更しました。そして、リンクは私のUIWebViewで機能しました。名前を変えても同じです。プロファイルをインストールするとアプリが終了してしまうので、UIWebViewはアプリケーション全体に関わることをやりたがらないようです。UIWebViewDelegateを使用して、それがOKであることを伝えようとしましたが、それは納得のいくものではありませんでした。UIWebView内のmailto: URLのための同じ動作。
mailtoの場合。 の URL に対して、一般的なテクニックはそれらを [openURL] 呼び出しに変換することですが、私の場合、それはうまくいきません、シナリオ A を参照してください。
itms: URLについては、しかし、UIWebViewは期待どおりに動作します...。
EDIT2です。 openURL]でSafariにデータURLを送り込んでみましたが、うまくいきませんので、こちらをご覧ください。 iPhoneでDATAを開く。サファリでURLを開く
EDIT3です。 Safariがfile:// URLをサポートしていないことに関する多くの情報を発見しました。しかし、UIWebViewは非常にサポートしています。また、シミュレータのSafariでは問題なく開くことができました。後者の部分が最もイライラさせられます。
EDIT4です。 私は解決策を見つけられませんでした。その代わりに、ユーザーがプロファイルを電子メールで送信できるような、2 ビット構成の Web インターフェイスを用意しました。
どのように解決するのですか?
1) ローカルサーバーをインストールします。
ルーティングHTTPSサーバ
2) カスタムヘッダーを設定する :
[httpServer setDefaultHeader:@"Content-Type" value:@"application/x-apple-aspen-config"];
3) mobileconfigファイルのローカルルートパス(Documents)を設定します。
[httpServer setDocumentRoot:[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]];
4) ウェブサーバーがファイルを送信する時間を確保するために、次のように:
Appdelegate.h
UIBackgroundTaskIdentifier bgTask;
Appdelegate.m
- (void)applicationDidEnterBackground:(UIApplication *)application {
NSAssert(self->bgTask == UIBackgroundTaskInvalid, nil);
bgTask = [application beginBackgroundTaskWithExpirationHandler: ^{
dispatch_async(dispatch_get_main_queue(), ^{
[application endBackgroundTask:self->bgTask];
self->bgTask = UIBackgroundTaskInvalid;
});
}];
}
5) コントローラーで、Documents に保存されている mobileconfig の名前で safari を呼び出します。
[[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"http://localhost:12345/MyProfile.mobileconfig"]];
関連
-
[解決済み] Node.jsのデプロイメント設定/構成ファイルを保存する方法は?
-
[解決済み】iPhoneアプリケーションにカスタムフォントを埋め込むことはできますか?
-
[解決済み】UIWebViewが垂直に "バウンド "するのを止めるには?
-
[解決済み】@try - Objective-Cのcatchブロック
-
[解決済み] iPhoneでウェブページからアプリがインストールされているかどうかを確認する方法
-
[解決済み] UIWebViewでHTMLとローカル画像を使用する
-
[解決済み] iOSアプリでドキュメントフォルダ内にフォルダを作成する
-
[解決済み] drawRectを使うか使わないか(drawRect/Core Graphicsとsubview/imagesをいつ使うか、なぜ使うか)?
-
[解決済み] Objective-C用JSONパーサーの比較(JSON Framework、YAJL、TouchJSON、etc.)
-
[解決済み] テーブルビューの行をプログラムで選択する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] hw.machine」識別子の信頼性を確認する方法は?
-
[解決済み] UIImage。リサイズ、そしてクロップ
-
[解決済み] iPhoneのシミュレータに.ipaファイルをインストールする方法は?
-
[解決済み] NSDictionaryをNSDataに、またはNSDataをNSDictionaryに変換するにはどうすればよいですか?
-
[解決済み] Xcode 4.2 - '...' の宣言は、この関数の外では表示されません 警告
-
[解決済み] UIViewControllerの上にclearColor UIViewControllerを表示する
-
[解決済み] UIImageのアスペクト比と幅を維持したリサイズ
-
[解決済み] 再署名 IPA (iPhone)
-
[解決済み] UIViewのサブビューをセンタリングする方法
-
[解決済み] iPhoneシミュレーターでカメラをテストするには?