有没有在iOS中启动Messages应用程序的另一种方法? (用于捐款)
我们正在尝试提交一个可以发送慈善短信捐赠的iOS应用。过去我们已经完成了许多这些,没有问题;但苹果不再愿意接受我们的方法并拒绝了我们的应用程序。有没有在iOS中启动Messages应用程序的另一种方法? (用于捐款)
他们声称该应用程序不符合指南21.2的要求。那就是:
21.2捐款的收集必须通过在Safari网站或短信
在过去的完成,并且在当前的应用程序,我们在使用MFMessageComposeViewController
MessageUI
构建SMS消息的框架。我们使用这个,因为;作为短代码的捐赠,我们需要能够在消息中编写关键字。
在调解中心有点背的往复的(和拒绝纠纷)我可以摆脱苹果的什么我们应该做的最多的是后:
发送短信从应用程序内可能不符合App Store指南。
和
的短信链接应该推出的消息,使捐赠。
我们可以使用sms:
URL scheme启动消息应用程序中的某个数值,但这种方法并不能让我们添加我们需要的关键字。
所以问题是:有谁知道另一种启动消息应用程序的方式吗?
我们的后备选择是放弃自己建立短信,并有一个告警,告知用户“文字YYYY到ZZZZ”,这是一个非常糟糕的用户体验。
更新(2013年3月5日):
我们与我们的警惕,只有后备选项再次重新提交应用程序...它再次被否决出于同样的原因。我们再次与苹果竞争。
更新(2013年3月6日):
后严厉的消息,苹果解释明显...应用已通过提交。
我写道:
我们不得不同意。该应用不包括在应用内收集慈善捐款的能力。它只会通知用户他们如何捐赠。
所以;如果你有同样的问题,我建议在开始“修复”你的应用程序之前先尝试抱怨。
Yes和No.
在基本层面:NO。我已浏览了文档,并且在外部调用消息应用程序时,您(非常沮丧地)无法为您的消息设置正文。
您只能:
-
打开邮件应用
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms:"]];
-
输入一个数字,消息
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms:+1234567890"]];
更复杂:是。以下是用正文发送短信的方法和代码。它呈现一个完全像消息应用程序一样的ModalView视图。并供参考you can read the docs here。
导入
MessageUI
框架到您的项目-
这些添加到视图的.H的动作发送消息是(在我的情况简单用一个按钮查看)。
#import <MessageUI/MessageUI.h> #import <MessageUI/MFMessageComposeViewController.h>
-
重要的代码来发送消息应类似于:
-(IBAction)sendSMS:(id)sender { if([MFMessageComposeViewController canSendText]) { MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init]; controller.body = @"Hello"; controller.recipients = [NSArray arrayWithObjects:@"+1234567890", nil]; controller.messageComposeDelegate = self; [self presentViewController:controller animated:YES completion:nil]; } }
上面的代码将无法发送短信或取消的观点,因为我们还没有实现messageComposeViewController:didFinishWithResult:
方法 - 此文档可以被读取here。这看起来如下所示:
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller
didFinishWithResult:(MessageComposeResult)result {
switch(result) {
case MessageComposeResultCancelled:
// user canceled sms
[self dismissViewControllerAnimated:YES completion:nil];
break;
case MessageComposeResultSent:
// user sent sms
//perhaps put an alert here and dismiss the view on one of the alerts buttons
break;
case MessageComposeResultFailed:
// sms send failed
//perhaps put an alert here and dismiss the view when the alert is canceled
break;
default:
break;
}
}
在每种情况下,您都可以显示警报,关闭视图(如情况1)或任何应用程序所需。
我相信这个第二种方法应该被批准,否则Apple应该从文档中删除它。关键是if语句canSendText
。如果这个(或者案例开关didFinishWithResult
)没有实现,Apple肯定会拒绝该应用。
你也可以设置身体,但是你必须逃避字符串。
NSString *sms = @"sms:+1234567890&body=This is the body.";
NSString *url = [sms stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
我不确定这是否总是以'sms:'方式这样,但现在看起来是这样。 – Wex 2016-03-17 04:08:31
我们采取了第二条路线;几乎和你描述的一样。他们仍然失败了我们。我们做的唯一不同的是,我们在didFinishWithResult中没有开关箱 - 我们关闭控制器而不管结果如何。 – Wex 2013-02-14 11:06:45
啊,我刚刚读了很多关于你的情况,我认为它是苹果不愿意改变的事情之一。在应用程序内购买假装农场的东西似乎没有问题 - 他们可以在那里获得裁剪 - 但不会捐赠给慈善机构。我想这些选项是等待它,并指示你的用户输入短语的单词(也许你可以自动将文本复制到剪贴板,使过程更容易,更方便用户)。 – Patrick 2013-02-14 11:27:26
令人讨厌的部分是,我们用捐赠应用程序在几次之前完成了这项工作。现在我们必须向我们的客户解释苹果已经改变了心态。剪贴板的想法很好,但需要更多的用户指导,而不是价值。欢呼的思想。 – Wex 2013-02-15 16:34:42