7

Safari でモバイル構成ファイル (mobileconfig) を開いてインストールしようとしていますが、何も機能しません。URL スキームを使用します。

NSURL *finalURL = [NSURL URLWithString:[NSString stringWithFormat:@"myAppURLScheme://%@",fileName]];
BOOL canOpen = [[UIApplication sharedApplication] openURL:finalURL];
   if (canOpen) NSLog(@"can open");
   else NSLog(@"can't open");

ログ -->can open

Documentsそして、fileNameの代わりにファイルへのすべてのパス(ファイルはフォルダーにあります)を設定しようとしましたが、何もありません。どうすればいいですか。?

Edit1 : このアプリケーションは同じことを行います (サファリを開いて設定をインストールします)

Edit2:ファイル(任意)をサファリに送信する方法を検索する必要があると思います。サファリはそれをどうするかを知っています。

4

4 に答える 4

13
  1. バックグラウンド タスクを承認する

.h ファイル:

UIBackgroundTaskIdentifier bgTask;

.m ファイル:applicationDidEnterBackground新しいバックグラウンド タスクを追加します。

bgTask = [application beginBackgroundTaskWithExpirationHandler: ^{
        dispatch_async(dispatch_get_main_queue(), ^{
            [application endBackgroundTask:self->bgTask];
            self->bgTask = UIBackgroundTaskInvalid;
        });
    }];
  1. プロジェクトにCocoaHTTPServerを追加する

  2. サーバーを実行し、.mobileconfig ファイルを開きます。

        RoutingHTTPServer *httpServer = [[RoutingHTTPServer alloc] init];
        [httpServer setType:@"_http._tcp."];
        [httpServer setPort:12345];
        [httpServer setDefaultHeader:@"Content-Type" value:@"application/x-apple-aspen-config"];
        [httpServer setDocumentRoot:[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]];
    
        if([httpServer start:nil])
        {
            [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://localhost:12345/myprofile.mobileconfig"]];
        }
    
于 2013-02-17T10:56:07.547 に答える
3

モバイル構成ファイルはアプリのサンドボックス内にあります。Safariにはアクセスできません。onlyの戻り値は、そのURL スキーム[UIApplication openURL]を理解するアプリケーションがあったかどうかを示します。myAppURLSchemeuri ハンドラーとしてinfo.plistファイルに追加したと仮定すると、その URL を自分自身に送信しているように見えます。

于 2013-02-12T22:26:26.807 に答える
0

運が悪かったのですが、他の誰かがこの情報を使用できるのであれば、とにかくこれを投稿します。data:Mobile SafariでサポートされているURLで文字列を開こうとしましたが、openURL:残念ながらサポートされていません。

NSString *urlHeader = @"data:application/x-apple-aspen-config;charset=utf-8,";
NSString *mobileConf = @"<?xmlversion=\"1.0\"encoding=\"UTF-8\"standalone=\"yes\"?>"
    "<!DOCTYPEplistPUBLIC\"-//Apple//DTDPLIST1.0//EN\"\"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">"
    "<plistversion=\"1.0\"><dict><key>PayloadUUID</key><string>A0670934-C558-42E1-9E80-9B8E079E9AB2</string><key>PayloadDisplayName</key><string>EnableTethering</string><key>PayloadDescription</key><string>EnablesTethering</string><key>PayloadOrganization</key><string>de.iphone-notes</string><key>PayloadVersion</key><integer>1</integer><key>PayloadIdentifier</key><string>de.iphone-notes.etisalat</string><key>PayloadType</key><string>Configuration</string><key>PayloadContent</key><array><dict><key>PayloadUUID</key><string>C1A41907-0CD9-4DC9-BAF1-A04A73B7E296</string><key>PayloadDisplayName</key><string>AdvancedSettings</string><key>PayloadDescription</key><string>ProvidescustomizationofcarrierAccessPointName.</string><key>PayloadOrganization</key><string>de.sendowski</string><key>PayloadVersion</key><integer>1</integer><key>PayloadIdentifier</key><string>de.iphone-notes.etisalat.apn</string><key>PayloadContent</key><array><dict><key>DefaultsDomainName</key><string>com.apple.managedCarrier</string><key>DefaultsData</key><dict><key>apns</key><array><dict><key>apn</key><string>Etisalat.ae</string><key>username</key><string></string><key>password</key><string></string><key>type-mask</key><integer>-2</integer></dict></array></dict></dict></array><key>PayloadType</key><string>com.apple.apn.managed</string></dict></array></dict></plist>";

mobileConf = [mobileConf stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
NSURL *finalURL = [NSURL URLWithString:[urlHeader stringByAppendingString:mobileConf]];

BOOL canOpen = [[UIApplication sharedApplication] openURL:finalURL];
if (canOpen) NSLog(@"can open");
else NSLog(@"can't open");

テストの場合、そのhttp://data:にプレフィックスを付けることができます。少なくともSafariで開き、プレフィックスを削除して試すことができます。プレフィックスを削除するためのJavaScriptインジェクションが機能する可能性があります。知らない。

于 2013-02-16T13:17:20.187 に答える
0

データ URI を使用して、mobileconfig をエンコードして起動できると思います。(ここには IOS デバイスがないため、今はテストできません_

http://dopiaza.org/tools/datauri/index.phpを使用してプロファイルをエンコードできます (MIME タイプを追加することを忘れないでください: application/x-apple-aspen-config)

次に、開くことができます:

[[UIApplication sharedApplication] openURL:dataURLGenerated];
于 2013-02-14T22:14:22.127 に答える