我不知道从哪里开始,因为没有官方的插件文档。
任何人都可以帮助我,我如何启动项目。
有没有任何初步的链接或教程,请建议?
如何构建最小的Apple Mail插件(从小牛和Xcode 6.0.1开始)
>您需要在XCode中创建一个OSX“Bundle”项目
>包装扩展名是mailbundle(在包装中的项目中构建设置)
>一个bundle需要存储在〜/ library / Mail / Bundles(作为构建阶段添加一个复制文件 *** 作,作为绝对路径目的地,* .mailbundle从您的构建/文件夹作为要复制的项目)
>为了开发,我已经在我的运行方案中设置了/Applications/Mail.app作为可执行文件,因此XCode中的运行将构建它,复制捆绑包并启动邮件;请注意,在这一点上,您将收到邮件中的错误,您的插件无法启动并被禁用
>您需要在Info.pList中提供SupportedpluginCompatibilityUUID的列表,I stole it from GPGMail,这些change with new Mail/OSX versions
>使用class-dump从Mail.app的私有API生成头文件
>起点是MVMailBundle,你必须继承,并有一个registerBundle方法来挂钩你
>我从一个小的MVMailBundle.h标题中的巨大的生成的头文件中提取出来,以包含需要的内容(由Gpgmail完成)
>创建一个新类MyMailBundle,继承自NSObject
>它需要一个初始化方法
>并将其设置为Info.pList中的“原则类”,以便在捆绑包由Mail.app加载时运行
#import <Cocoa/Cocoa.h>@interface MyMailBundle : NSObject+ (voID)initialize;@end
>初始化实现:以前,您可以使用简单的方式和directly inherit作为done in Letterbox,但是,since 64-bit runtimes of Objective-C您必须使用dynamic way as done by GPGMail:
>使用NSClassFromString动态获取MVMailBundle类
>和class_setSuperclass从< objc / runtime.h>让自己的类继承自己的类
>然后调用registerBundle就像MVMailBundle一样(需要包含MVMailBundle.h)
#import <objc/runtime.h>#import "MVMailBundle.h"#import "MyMailBundle.h"@implementation MyMailBundle+ (voID)initialize{ NSLog(@"Loading MyMail plugin..."); // since 64-bit objective-c runtimes,you apparently can't load // symbols directly (i.e. through class inheritance) and have to // resort to NSClassFromString Class mvMailBundleClass = NSClassFromString(@"MVMailBundle"); // If this class is not available that means Mail.app // doesn't allow plugins anymore or has changed the API if (!mvMailBundleClass) return; // dynamically change super class hIErarchy#pragma GCC diagnostic push#pragma GCC diagnostic ignored "-Wdeprecated" class_setSuperclass([self class],mvMailBundleClass);#pragma GCC diagnostic pop // register our plugin bundle in mail [[((MyMailBundle *)self) class] registerBundle]; NSLog(@"Done registering MyMail plugin.");}@end
>添加一些NSLog日志记录调用来验证正确的事情,在XCode的控制台中运行/调试Mail.app时,或者在Console.app的系统日志中可以看到它们。
>这应该成功地运行插件在邮件没有错误!
>接下来的步骤涉及疯狂的事情,如MethodSwizzling和ClassPosing修改邮件的行为,Gpgmail可以是一个helpful example.(还没有在那里)
作为参考,这里有一些帮助我的资源:
> GPGMail
> Adam Nash: Getting Ready to Write an Apple Mail.app Plug-in for Mac OS X – 一些很好的链接,但显然他从来没有完成这个项目,所以没有代码
> James R. Eagan: Demystifying Mail.app Plugins on Leopard – 使用PyObjC在Python中编写一个插件,解释了基本的机制,非常有用
> Aaron Harnly: Mail Plugin Template – 对于XCode 2我认为,不幸的是,模板(下载zip)不再作为Xcode中的模板,但代码仍然有用,看看
> Aaron Harnly: Letterbox sources – 从同一个家伙,也从2007年,非常过时;包含一个readme from the template,虽然如果您不能使用该模板,它不是真的有帮助。
以上是内存溢出为你收集整理的objective-c – 如何创建Apple邮件插件全部内容,希望文章能够帮你解决objective-c – 如何创建Apple邮件插件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)