我如何使用方法来通过Apple iOS App评论

作为一名开发人员,我想与遇到类似问题的任何人分享我的处理方式,如果您对此有经验或有兴趣在评论中分享。

对于任何进入App Store的应用程序来说,应用程序审查过程都是必不可少的步骤,它可以确保开发人员制作出高质量的应用程序。如果您想了解更多有关它们的信息,可以在此处阅读,以获取大量定义和指导。 :

App Review – App Store –苹果开发人员
概述用于审查提交给… developer.apple.com的应用程序的技术,内容和设计标准的准则和资源

我正在完成一个iOS互联网银行应用程序的开发周期,在这种情况下,该应用程序需要在第一个屏幕中输入登录凭据。 Apple应用程序审核小组指定,如果该应用程序使用凭据,则需要一个模拟帐户,以便他们可以检查该应用程序的所有功能。 由于这是银行的应用程序,因此他们很乐意为我提供任何帐户,因为该应用程序应在生产中,并且在该环境下没有任何测试帐户。

提出了许多解决方案,其中包括一些怪异的解决方案,例如仅用于检查过程的API或数据库切换,然后再将其改回。

两周过去了,我还没有演示帐户,所以我决定参加手头的事,并在应用程序中放入一些硬编码数据,以模拟获取信息的所有方法,而不是服从帕金森法则。从API。

因此,我的第一种方法是在每种方法的开头放置一个丑陋的外观,以查看Apple是否以演示用户身份登录,这真的很丑陋,我不想将此代码放在这些函数中,我什至没有就像那里的if语句。 做一些谷歌搜索确实很有用,我想出了一些我不知道的关于iOS开发的有趣的东西。

方法混乱,在运行时更改方法实现的过程,我发现NSHipster中的一篇文章非常有用:

方法混乱
方法混乱是更改现有选择器的实现的过程。 这是一种使之成为可能的技术…… nshipster.com

我所做的是,对于应用程序中与API通信的每个模块,我都创建了一个新文件作为类别,并在其中编写了initialize方法来处理所需的方法:

  +(void)初始化{ 

如果(!MACUSER){
返回;
}

类class = [self class];

NSArray * originalSelectors = @ [
@“ doStuffOnSuccess:onFailure:”,
@“ doStuff1OnSuccess:onFailure:”,
@“ doStuff2OnSuccess:onFailure:”,
@“ doStuff3:onSuccess:onFailure:”
];

NSArray * swizzledSelectors = @ [
@“ appleReview_doStuffOnSuccess:onFailure:”,
@“ appleReview_doStuff1OnSuccess:onFailure:”,
@“ appleReview_doStuff2OnSuccess:onFailure:”,
@“ appleReview_doStuff3:onSuccess:onFailure:”
];

NSUInteger selectorsLength = originalSelectors.count;

for(int i = 0; i <selectorsLength; i ++){
  SEL originalSelector; 
SEL swizzledSelector;
  originalSelector = NSSelectorFromString(originalSelectors [i]); 
swizzledSelector = NSSelectorFromString(swizzledSelectors [i]);

方法originalMethod = class_getInstanceMethod(class,originalSelector);
方法swizzledMethod = class_getInstanceMethod(class,swizzledSelector);

method_exchangeImplementations(originalMethod,swizzledMethod);
}
}

这也是代码的要点。