好的,所以sendSMS在ios7及以下版本之前工作正常.但是,在ios8上,sendSMS函数失败,问题标题中出现错误.我在这里得到一个警告(尝试通过使用其他堆栈溢出问题将NSArray更改为NSString来解决):不兼容的指针类型从"NSString*"为controller.recipients = recipients分配给'NSArray*'; 它返回MessageComposeResultCancelled的结果.
if (ABMultiValueGetCount(phoneNumbers) > 0) {
phone = (__bridge_transfer NSString*)
ABMultiValueCopyValueAtIndex(phoneNumbers, 0);
[self sendSMS:@"Play me on PokerBuddies.
Download the app at: https://itunes.apple.com/us/app /poker-buddies/id404168013?mt=8"
recipientList:[NSString stringWithFormat:phone, nil]];
} else {
phone = @"[None]";
}
- (void)sendSMS:(NSString *)bodyOfMessage recipientList:(NSString *)recipients{
MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init];
if([MFMessageComposeViewController canSendText]){
controller.body = bodyOfMessage;
controller.recipients = recipients;
controller.messageComposeDelegate = self;
[self presentViewController:controller animated:YES completion:nil];
NSLog(@"Send SMS");
}
}
Run Code Online (Sandbox Code Playgroud)
小智 -1
我有同样的问题,例如 MessageComposeController 超时问题。我通过这样做解决了它。
您必须创建 MFMessageComposeViewController 的实例变量,并且当您要呈现消息控制器时,您必须检查实例对象是否已创建,然后执行 nil 并再次初始化该对象。因此此错误“CKSMSComposeRemoteViewController 等待来自 com 的栅栏屏障超时” .apple.mobilesms.compose”不会出现并且控制器会准确打开。
if ([MFMessageComposeViewController canSendText]) {
if (messageComposer) {
messageComposer = nil;
messageComposer = [[MFMessageComposeViewController alloc]init];
}
messageComposer.recipients = arrPhoneNumber;
messageComposer.messageComposeDelegate = self;
messageComposer.body = @"Your text";
isMessageComposeAppear = 1;
[self presentViewController:messageComposer animated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2104 次 |
| 最近记录: |