我们有一个szenario,我们为iOS提供了一个静态库,其中包含注册Apples APNS(推送通知服务)的代码。我们的想法是,为了激活推送,库的所有用户必须做的是从库提供的AppDelegate派生。
@interface LibraryAppDelegate // code from the library
- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(nonnull NSData*)deviceToken
@end
@interface MyAppDelegate : LibraryAppDelegate
@end
只要用户想要使用push,这就可以正常工作。如果用户 NOT 想要使用push并且根本不是从 LibraryAppDelegate 派生的,那么一切似乎也能正常工作,至少在编译和链接时是这样。 问题是,一旦应用程序准备就绪并获得存档并上传到应用程序商店,您将收到一封电子邮件,说明该应用程序存在问题。更具体:
缺少推送通知权利 - 您的应用似乎已注册 使用Apple推送通知服务,......
由于用户决定不使用APNS并且库中的代码永远不会被调用,我的想法是在链接时这个代码将被剥离,显然情况并非如此。
下图显示了库和应用程序的当前构建设置。
所以我的问题是,如果不使用,引用,需要它们,我们如何提供被剥离的代码?提前谢谢。