簡體   English   中英

在safari ios中打開保存在應用程序中的.mobileconfig文件

[英]Open .mobileconfig file saved in application in safari ios

我正在嘗試在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");

log - > can open

我嘗試將所有路徑(文件在Documents文件夾中)設置為文件而不是fileName,沒有。 我該怎么做。

Edit1 :這個應用程序也這樣做(打開safari來安裝配置)

Edit2 :我認為我必須搜索發送文件(任何)到safari的方式,safari將知道如何處理它。

  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"]]; } 

移動配置文件位於應用程序的沙箱中 Safari無法訪問它。 [UIApplication openURL]的返回值僅指示是否有應用程序了解該url方案 它看起來好像你正在向自己發送這個url,假設你將myAppURLScheme作為uri處理程序添加到你的info.plist文件中。

我想你可以使用數據URI來編碼和啟動mobileconfig。 (我這里沒有IOS設備,所以我現在無法測試_

您可以使用http://dopiaza.org/tools/datauri/index.php對您的個人資料進行編碼(不要忘記添加mime類型:application / x-apple-aspen-config)

然后你可以打開:

[[UIApplication sharedApplication] openURL:dataURLGenerated];

我也沒有運氣但是如果其他人可以使用這些信息我發布這個。 我嘗試通過data: url打開字符串,這是由Mobile Safari支持的,但不是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");

對於測試,您可以在data:之前添加http://然后它至少會在Safari中打開,您可以刪除前綴來嘗試它。 也許一些javascript注入刪除前綴將起作用; 我不知道。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM