app内售卖金融产品 ios
2018-12-11 11:26:47 weixin_44052294 阅读数 826

最近一直在忙上架App,今天抽个空写一篇这段时间我上架金融产品App到iOSAppStore的历程经验和上架被拒解决的方法!相信大家最近也都在为金融产品上架的事情头条。确实现阶段上马甲包的监管越来越严了。从以前用个人开发者账号就能去上传到现在需要找人借用配套的金融开发者账号和相关资质才能上线。

那么为什么从2018年初开始苹果审核组对于上架的监管会越来越严呢?

我印象比较深刻的是有两个比较重要的时间段让ios上架的监管变得严格.一个是12月15号所有现金贷的法人被召集去北京开会.涉及到关于贷款利率和合规方面的问题,主要的要求是第一:综合的贷款利率不能超过36%,第二:不能在放贷前扣去相关费用,第三:所有贷款公司必须符合国家批设相关金融机构资质,第四:贷款机构必须与客户签订电子合同并且注明贷款利率和收取的费用。

就因为这个条款当天导致了很多金融app都被下架了。那个时候报错的问题是5.2.1问题

第二个时间点事1月11号,开始大规模的报错3.2.1,要求app需要提交金融许可证和icp备案。金融许可证市面上有95%公司的没有。市面上之前过包的过法有很多.但是就这最近的几个月的上架监管程度让之前所有粗暴的玩法都淘汰。

我们来细数下我们最近几个月遇到的问题:从12月份开始最先曝出的事5.2.1问题这个问题主要的条款就是根据产品必须要有相应的有资质的开发者账号,并且你的产品内容必须和你的开发者账号的经营范围相符合。

接下来就是1月份大量曝光的3.2.1的问题,其实3.2.1的问题同样是资质类的问题,他们的操作方法其实和5.2.1是类似的,但是确实要比5.2.1问题会难的多

因为他需要我们提交我们所属开发者账号的金融许可证和icp备案,icp备案的一些公司拿的到,但是金融许可证市面上没有几家公司会有,由于国内的开发者反应的太多了,苹果现在也有所退让,所以也放松了点,作者后面上架都是提供银行存管协议也可以上架的

到了18年我们就遇到了2.1狗年大礼包,2.1问题最多会遇到7个条款,并不是说我们的产品一定遇到了这些问题,而是苹果的审核人员因为觉得我们的产品可能有问题,就先给我们一个被拒的大礼包,让我们自己去检查,这一个条款会浪费很多的时间成本,因为你需要按照这些条款去检查你们产品里的内容,2.1条款主要包括产品审核时隐藏过多,第三方支付问题,金融产品资质问题,马甲包重复问题

这些就是我们最近会遇到的所有的被拒条款,现阶段的话3.2.1和2.1条款是大家普遍会遇到的,通常我会把105的上架分为两个部分。第一个部分是技术方面你需要去解决;第二部分就是资质方面了。现阶段只有两个部分你都去解决了.你才能有稳定的上包几率。

我们先来讲下技术层面.首先我想和大家去分享下ios的审核机制.ios是分人审和机审的。

人审同样会有中国团队和美国团队的区分.他们主要就户是去审核你账号的相关的资质是否和你附件上传的证书匹配去看产品内部的公司信息是否有第三方公司信息以及app内容是否属于你的营业范围。机审主要就是代码方面的问题了,会看元数据有没有出错.整体的源码是否和同账号的App相同率超过70%。这边简单提一下4.3问题就是因为马甲包和主包源码重复导致报错4.3.这方面需要技术去进行修改源码.并且相应的UI和主副标题也要去进行调整。

这里我要着重说下人审,因为人工审核嘛会有很多的不确定性,如果运气好的话你可能什么都没有他就给你过了,但是如果真的是严格要求的话,会有不少app会卡在人审这个阶段。接下来我会分享下我们在面对人审团队审核的时候应该注意的一些事项,来增加上包的概率基础的产品内容方面。

我们最好把所有的出现在我们app里面的第兰方的公司信息全部隐藏,至少不要出现公司两个字。

尤其要注意在注册协议体现你们的公司信息,在首页的地方能体现你的产品名字。这样是为了能够和你的资质匹配。我们还需要增加一个‘关于我们”的模块.里面的需要声明app的名称和版权类似于下图。同时App需要添加客服的联系方式,这些都是比较小的细节.也是比较好去操作的,但是这些确实ios审核的时候审核人员的去看的重点,因为他们觉得这些内容是可以体现出产品的所属权的可以看下下图我们向客户要求的模版

2019-07-03 09:28:29 lrbtony 阅读数 24

最近一直在忙上架App,今天抽个空写一篇这段时间我上架金融产品App到iOSAppStore的历程经验和上架被拒解决的方法!相信大家最近也都在为金融产品上架的事情头条。确实现阶段上马甲包的监管越来越严了。从以前用个人开发者账号就能去上传到现在需要找人借用配套的金融开发者账号和相关资质才能上线。

那么为什么从2018年初开始苹果审核组对于上架的监管会越来越严呢?

我印象比较深刻的是有两个比较重要的时间段让ios上架的监管变得严格.一个是12月15号所有现金贷的法人被召集去北京开会.涉及到关于贷款利率和合规方面的问题,主要的要求是第一:综合的贷款利率不能超过36%,第二:不能在放贷前扣去相关费用,第三:所有贷款公司必须符合国家批设相关金融机构资质,第四:贷款机构必须与客户签订电子合同并且注明贷款利率和收取的费用。

就因为这个条款当天导致了很多金融app都被下架了。那个时候报错的问题是5.2.1问题

第二个时间点事1月11号,开始大规模的报错3.2.1,要求app需要提交金融许可证和icp备案。金融许可证市面上有95%公司的没有。市面上之前过包的过法有很多.但是就这最近的几个月的上架监管程度让之前所有粗暴的玩法都淘汰。

我们来细数下我们最近几个月遇到的问题:从12月份开始最先曝出的事5.2.1问题这个问题主要的条款就是根据产品必须要有相应的有资质的开发者账号,并且你的产品内容必须和你的开发者账号的经营范围相符合。

接下来就是1月份大量曝光的3.2.1的问题,其实3.2.1的问题同样是资质类的问题,他们的操作方法其实和5.2.1是类似的,但是确实要比5.2.1问题会难的多

因为他需要我们提交我们所属开发者账号的金融许可证和icp备案,icp备案的一些公司拿的到,但是金融许可证市面上没有几家公司会有,由于国内的开发者反应的太多了,苹果现在也有所退让,所以也放松了点,作者后面上架都是提供银行存管协议也可以上架的

到了18年我们就遇到了2.1狗年大礼包,2.1问题最多会遇到7个条款,并不是说我们的产品一定遇到了这些问题,而是苹果的审核人员因为觉得我们的产品可能有问题,就先给我们一个被拒的大礼包,让我们自己去检查,这一个条款会浪费很多的时间成本,因为你需要按照这些条款去检查你们产品里的内容,2.1条款主要包括产品审核时隐藏过多,第三方支付问题,金融产品资质问题,马甲包重复问题

这些就是我们最近会遇到的所有的被拒条款,现阶段的话3.2.1和2.1条款是大家普遍会遇到的,通常我会把105的上架分为两个部分。第一个部分是技术方面你需要去解决;第二部分就是资质方面了。现阶段只有两个部分你都去解决了.你才能有稳定的上包几率。

我们先来讲下技术层面.首先我想和大家去分享下ios的审核机制.ios是分人审和机审的。

人审同样会有中国团队和美国团队的区分.他们主要就户是去审核你账号的相关的资质是否和你附件上传的证书匹配去看产品内部的公司信息是否有第三方公司信息以及app内容是否属于你的营业范围。机审主要就是代码方面的问题了,会看元数据有没有出错.整体的源码是否和同账号的App相同率超过70%。这边简单提一下4.3问题就是因为马甲包和主包源码重复导致报错4.3.这方面需要技术去进行修改源码.并且相应的UI和主副标题也要去进行调整。

这里我要着重说下人审,因为人工审核嘛会有很多的不确定性,如果运气好的话你可能什么都没有他就给你过了,但是如果真的是严格要求的话,会有不少app会卡在人审这个阶段。接下来我会分享下我们在面对人审团队审核的时候应该注意的一些事项,来增加上包的概率基础的产品内容方面。

我们最好把所有的出现在我们app里面的第兰方的公司信息全部隐藏,至少不要出现公司两个字。

尤其要注意在注册协议体现你们的公司信息,在首页的地方能体现你的产品名字。这样是为了能够和你的资质匹配。我们还需要增加一个‘关于我们”的模块.里面的需要声明app的名称和版权类似于下图。同时App需要添加客服的联系方式,这些都是比较小的细节.也是比较好去操作的,但是这些确实ios审核的时候审核人员的去看的重点,因为他们觉得这些内容是可以体现出产品的所属权的可以看下下图我们向客户要求的模版

来源地址:https://blog.csdn.net/weixin_44052294/article/details/84952291

2017-03-31 10:09:00 weixin_34250434 阅读数 32

前言

iOS 10.3 引入了SKStoreReviewController的Api, 用于在App内评价. 评价将直接提交到App Store, 这使得用户无需离开App进入App Store评价. 而且现在苹果允许开发者直接回复用户的评价. 为了规范使用, 苹果给出了以下建议:

  • 要让用户充分使用后再评价(不要初次启动就评价)
  • 不要打断用户体验
  • 不要重复多次弹出使用户厌烦
  • 不要改变默认的UI
  • 由于一年三次的限制, 不要从按钮或其他控件弹出

弹出的窗口大概是这样子的(图片来自苹果官网)


1688625-557b0df6285fd51e.png
AppRating_2x.png

实践

首先需要引入StoreKit, 然后简单一句代码就可弹出:

SKStoreReviewController.requestReview()

需要注意的是仅有iOS 10.3以上才可用, 如果需要适配更低OS版本, 建议使用如下代码:

if #available(iOS 10.3, *) {
    SKStoreReviewController.requestReview()
}

后记

苹果再次规范化体验, 简洁易用一直是苹果努力的方向. 美中不足的是次数有限, 且目前无法添加文字评价.

2018-09-14 14:31:00 weixin_34060741 阅读数 24

App内评分

苹果在iOS 10.3中增加了App评分的新API,用户可以直接在App内评分,而不用跳转到App Store。
使用非常简单,只有一行代码,但也说明了它没有任何可定制性。

此API使用前需要 #import <StoreKit/StoreKit.h>:

    if (@available(iOS 10.3, *)) {
            [SKStoreReviewController requestReview];
    }

显示效果如下图:


2710049-dfd7aa2508d748e9.png
App内评分

点击星星即可评分,评分之后会显示提交按钮:


2710049-92050b29bf38947a.png
准备提交

“提交”按钮仅在生产环境(上传App Store的包)才是有效的,其余均为上图中的灰色禁用状态。

注意:
苹果官方说不能骚扰用户,因此使用此API有非常严格的限制。
按苹果规定,每台设备、每个App、每年只能弹出3次该提示窗口,如果超过这个次数,则什么都不会显示。(╯‵□′)╯︵┻━┻
虽然规定严格,但它非常方便,用户随手一点就可以给App评分了。再想想以前的方式:先离开App跳转到App Store,等待网络加载,在那么长的页面中找到评分入口。。。破坏用户使用App的整体性、影响用户心情、浪费用户时间、增加用户学习成本。。。可以说毫无优点。即便我自己作为一个开发者,都很少跳转到应用商店给App评分,但如果我发现哪个App使用了这个新API,我一般至少给个4星好评!举手之劳,何乐而不为呢?(~ ̄▽ ̄)~
因此,我们必须利用好每年的这3次机会。苹果官方的意思是,你应该在用户对你的App有了整体的了解,且对你的App感到满意的时候弹出窗口,请用户给予评分。
这么玄学的状态怎么把握呢?举个栗子,你的App是一款游戏,用户正在打关底boss,你肯定不想在这个时候弹出窗口让用户评分吧(保证他给你一星)?等他成功通关的时候,这时他正心满意足,肯定不介意赏你几颗星星。

新API虽然方便又好用,但是次数实在太少,而且弹出了用户可能也会点击“取消”,关键这也会使次数-1!而且,这个功能是有可能被用户关闭的,在系统设置->iTunes Store与App Store中可以找到“App内评分及评论”的开关,如果用户关闭了这个开关,则上面的窗口也不会弹出。
所以,我们还是需要有个跳转到App Store的方法做保障,在次数不足时(App中无法获取到“App内评分及评论”开关的状态)使用。

Deep Link

大家应该都知道跳转到App Store的方法:

NSString *appURL = @"https://itunes.apple.com/cn/app/idAppID";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:appURL]];

这样可以跳转到自己的APP在应用商店的地址,但是有可能用户找不到在哪评分?(要相信,真的有这样的用户存在)

因此,下面介绍一种可以直接跳转到评分页面的方法。这个方法其实在上述新API的注释中苹果已经提到,他们称为“Deep Link”。使用方式与上面的方法一致,只是在URL后面拼接一个query params:action=write-review
下面是完整代码:

NSString *appURL = @"https://itunes.apple.com/cn/app/idAppID?action=write-review";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:appURL]];

它在App Store中的显示效果如下:


2710049-c0095c15399bd7ab.jpg
Deep Link

怎么找到自己的AppID?

  • 如果你的App已经上线,那么在App Store中找到你的App,点击分享->拷贝链接->在别处粘贴,就可以在链接末尾找到类似于id123456789的字符串,这串数字就是你的AppID了。
  • 不管你的App是否已经上线,在App Store Connect(以前叫iTunes Connect)中找到你的App,它的位置在下图中的两处红框中可以找到:
    2710049-5ab308ab36b38b70.png
    QQ20180914-142518.png
2012-06-18 11:18:50 ch_soft 阅读数 3745

iOS4.0新加入了MFMessageComposeViewController和MFMessageComposeViewControllerDelegate,提供了发送短信的接口,可以像发送邮件那样不用跳出程序来发送短信. 介绍可参阅Message UI
Framework Reference

一些笔记:


MFMessageComposeViewController

  • 提供了操作界面
  • 使用前必须检查canSendText方法,若返回NO则不应将这个controller展现出来,而应该提示用户不支持发送短信功能.
  • 界面不能自行定制
  • 要发送的短信的内容(body)和收件人(recipients)在展现这个controller前需初始化好,展现了之后短信内容不能通过程序来进行修改.不过用户仍然可以手工修改短信内容和选择收件人
  • 用户点了发送或者取消,或者发送失败时,MFMessageComposeViewControllerDelegate 的– messageComposeViewController:didFinishWithResult:方法都能得到通知,在这里进行相应的处理

若在iOS3.0上运行的话,会提示dyld: Symbol not found: _OBJC_CLASS_$_MFMessageComposeViewController .解决方案:

  1. MessageUI.framework的引入类型应选择weak(在target -> Get Info -> General -> Linked Libraries -> MessageUI.framework -> Type 里修改)
  2. 不要在.h文件里直接import MessageUI/MFMessageComposeViewController.h,改为import <MessageUI/MessageUI.h>

代码:

#pragma mark -
#pragma mark SMS

-(IBAction)showSMSPicker:(id)sender {
	//	The MFMessageComposeViewController class is only available in iPhone OS 4.0 or later.
	//	So, we must verify the existence of the above class and log an error message for devices
	//		running earlier versions of the iPhone OS. Set feedbackMsg if device doesn't support
	//		MFMessageComposeViewController API.
	Class messageClass = (NSClassFromString(@"MFMessageComposeViewController"));

	if (messageClass != nil) {
		// Check whether the current device is configured for sending SMS messages
		if ([messageClass canSendText]) {
			[self displaySMSComposerSheet];
		}
		else {
			[UIAlertView quickAlertWithTitle:@"设备没有短信功能" messageTitle:nil dismissTitle:@"关闭"];
		}
	}
	else {
		[UIAlertView quickAlertWithTitle:@"iOS版本过低,iOS4.0以上才支持程序内发送短信" messageTitle:nil dismissTitle:@"关闭"];
	}
}

-(void)displaySMSComposerSheet
{
	MFMessageComposeViewController *picker = [[MFMessageComposeViewController alloc] init];
	picker.messageComposeDelegate = self;

	NSMutableString* absUrl = [[NSMutableString alloc] initWithString:web.request.URL.absoluteString];
	[absUrl replaceOccurrencesOfString:@"http://i.aizheke.com" withString:@"http://m.aizheke.com" options:NSCaseInsensitiveSearch range:NSMakeRange(0, [absUrl length])];

	picker.body=[NSString stringWithFormat:@"我在爱折客上看到:%@ 可能对你有用,推荐给你!link:%@"
										,[web stringByEvaluatingJavaScriptFromString:@"document.title"]
										,absUrl];
	[absUrl release];
	[self presentModalViewController:picker animated:YES];
	[picker release];
}

- (void)messageComposeViewController:(MFMessageComposeViewController *)controller
				 didFinishWithResult:(MessageComposeResult)result {

	switch (result)
	{
		case MessageComposeResultCancelled:
			LOG_EXPR(@"Result: SMS sending canceled");
			break;
		case MessageComposeResultSent:
			LOG_EXPR(@"Result: SMS sent");
			break;
		case MessageComposeResultFailed:
			[UIAlertView quickAlertWithTitle:@"短信发送失败" messageTitle:nil dismissTitle:@"关闭"];
			break;
		default:
			LOG_EXPR(@"Result: SMS not sent");
			break;
	}
	[self dismissModalViewControllerAnimated:YES];
}

iOS App内发送短信

阅读数 727

iOS App内评分

阅读数 224

没有更多推荐了,返回首页