自分のappを他のアプリケーションの開き方リストに表示します.
4692 ワード
最近、会社では、ユーザーが微信、qqまたはその他のappでWord、Ecxel、PDFファイルを受け取るときに、開く方法を選択すると、自分のappが開く方法のリストに表示され、自分のappにジャンプして開くか、アップロードすることができ、解決方法は以下の通りです.
以下は例にすぎませんが、具体的には参考にしてください.https://developer.apple.com/library/content/documentation/Miscellaneous/Reference/UTIRef/Articles/System-DeclaredUniformTypeIdentifiers.html#//apple_ref/doc/uid/TP40009259-SW1
部分コード参照:自http://stackoverflow.com/questions/15836145/associate-files-type-with-my-iphone-app
1.1 CFBundleDocumentTypeというkeyが追加されました.対応するvalueは辞書配列で、具体的には のように構成されています. 1.2サポートされているファイルタイプとファイル拡張子を宣言し、UTExportedType Declarationsというkeyを追加しました.構成は以下の です.
2.1一般的なコントローラQYFileReader Controllerを作成しました.コントローラにはUIWebViewプロパティがあり、UIWebViewでこれらのファイルを自動的に解析できます. 2.2 QYFileReader Controllerは、これらのファイルを受信するためのurlコードが次のようにNSUrlタイプの属性を外部に暴露した. 2.3 AppDelegate(BOOL)アプリケーション:(UIApplication*)アプリケーションhandleOpenURL:(NSURL*)urlメソッドでこれらのファイルのオープンおよび取得に対応するファイルのurlを傍受し、QYFileReader Controller にurlを渡す
以下は例にすぎませんが、具体的には参考にしてください.https://developer.apple.com/library/content/documentation/Miscellaneous/Reference/UTIRef/Articles/System-DeclaredUniformTypeIdentifiers.html#//apple_ref/doc/uid/TP40009259-SW1
部分コード参照:自http://stackoverflow.com/questions/15836145/associate-files-type-with-my-iphone-app
1.info.plistファイルは次のように構成されています。
CFBundleDocumentTypes
CFBundleTypeName
Molecules Structure File
CFBundleTypeIconFiles
[email protected]
icon.png
LSItemContentTypes
com.adobe.pdf
com.microsoft.word.doc
com.microsoft.excel.xls
CFBundleTypeRole
Viewer
LSHandlerRank
Owner
UTExportedTypeDeclarations
UTTypeConformsTo
public.data
public.composite-content
UTTypeIdentifier
com.adobe.pdf
UTTypeDescription
PDF
UTTypeTagSpecification
public.mime-type
application/pdf
public.filename-extension
pdf
UTTypeConformsTo
public.data
UTTypeIdentifier
com.microsoft.word.doc
UTTypeDescription
Word
UTTypeTagSpecification
public.mime-type
application/msword
public.filename-extension
doc
docx
UTTypeConformsTo
public.data
UTTypeIdentifier
com.microsoft.excel.xls
UTTypeDescription
Excel Document
UTTypeTagSpecification
public.mime-type
application/vnd.ms-excel
public.filename-extension
xls
2.これらのファイルを処理するコントローラを作成し、AppDelegateメソッドでこれらのファイルのオープンを傍受します。
@interface QYFileReaderController : UIViewController
/** url */
@property (nonatomic,strong)NSURL *absoluteUrl;
@end
@interface QYFileReaderController ()
@property (weak, nonatomic) UIWebView *webView;
@end
@implementation QYFileReaderController
- (void)viewDidLoad {
[super viewDidLoad];
[self setupWebView];
//
[self.webView loadRequest:[NSURLRequest requestWithURL:self.absoluteUrl]];
}
- (void)setupWebView{
UIWebView *webView = [[UIWebView alloc]initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)];
self.webView = webView;
[self.view addSubview:self.webView];
//
self.webView.scalesPageToFit = YES;
//
self.webView.scrollView.bounces = NO;
}
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
// NSLog(@"url:%@",url.absoluteString);
// NSLog(@"host:%@",url.host);
BOOL isLogin = YES; //
if (isLogin)
{
QYFileReaderController *readerVC = [[QYFileReaderController alloc] init];
readerVC.absoluteUrl = url;
UINavigationController *nav = self.window.rootViewController;
[nav pushViewController:readerVC animated:YES];
}
return YES;
}