Первое первых, вы должны понимать, о том, приложение связи. Вам нужна настраиваемая схема URL для вашего приложения. Пожалуйста, обратитесь: https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html
Теперь после того, как у вас есть собственный URL Sheme, действуйте следующим образом:
Чтобы получить перечисленный в широком меню доли системы, Вам необходимо сделать собственную активность.
сделать класс, как в следующем: В YourActivity.h файл
@interface YourActivity : UIActivity
-(void)someInitialisationMethod:(NSString*)string;
@end
и в YourActivity.m файл
#import "YourActivity.h"
@implementation YourActivity
- (NSString *)activityType
{
return @"UIActivityCategoryShare";
}
- (NSString *)activityTitle
{ // here give the title of your app or the action name that it performs
return @"YourAppName";
}
+ (UIActivityCategory)activityCategory
{// there are two types of category- share and action
return UIActivityCategoryShare;
}
- (UIImage *)activityImage
{
// Note: These images need to have a transparent background and I recommend these sizes:
// [email protected] should be 126 px, iPadShare should be 53 px, [email protected] should be 100
// px, and iPhoneShare should be 50 px. I found these sizes to work for what I was making.
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
return [UIImage imageNamed:@"YourActivityImage.png"];
}
else
{
return [UIImage imageNamed:@"YourActivityImage.png.png"];
}
}
- (BOOL)canPerformWithActivityItems:(NSArray *)activityItems
{
NSLog(@"%s", __FUNCTION__);
return YES;
}
- (void)prepareWithActivityItems:(NSArray *)activityItems
{
NSLog(@"%s",__FUNCTION__);
}
- (UIViewController *)activityViewController
{
NSLog(@"%s",__FUNCTION__);
return nil;
}
- (void)performActivity
{
// This is where you can do anything you want, and is the whole reason for creating a custom
// UIActivity
NSURL *yourCustomURLMaybe = [NSURL URLWithString:someInitialisedString];
if ([[UIApplication sharedApplication] canOpenURL: yourCustomURL]) {
[[UIApplication sharedApplication] openURL: yourCustomURL];
}
else
{
NSLog(@"YourActivity not found");
}
[self activityDidFinish:YES];
}
@end
Теперь, когда пользовательская активность сделана Вам нужно запустить его с помощью общего меню
NSString *yourCustomUrl = [NSString stringWithFormat:@"YourCustomURLScheme?..."];
NSString *escapeAdded = [yourCustomUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *finalCustomURL = [NSURL URLWithString:escapeAdded];
YourActivity *ca;
if ([[UIApplication sharedApplication] canOpenURL: finalCustomURL])
{
ca = [[YourActivity alloc]init];
}
else
{
ca = nil;
}
NSArray *applicationActivityArray = [[NSArray alloc] initWithObjects:ca,nil];
Наконец, когда вы представите на текстовое поле, добавьте выше массив приложений деятельности:
activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[...] applicationActivities:applicationActivityArray];
}
Определение "не работает". Имейте в виду, что приложения «Фотографии и почта» (по какой-то глупой, неизвестной причине) не дают возможности открывать изображения в сторонних приложениях. – rmaddy
Мое приложение не отображается в списке меню общего доступа. Я также попробовал несколько других приложений, и мое приложение тоже не входит в список. Правильно ли строка вводится для файлов изображений ?: ' com.apple.ui-services ' –
Tom
Для этого вам не требуется расширение. Вы хотите появиться в меню «Открыть в». См. Http://stackoverflow.com/questions/2774343/how-do-i-associate-file-types-with-an-iphone-application/2781290#2781290 – rmaddy