首先,我真的很惊讶这不是重复,因为有很多堆栈溢出问题可以在Objective-C中解决这个问题,但是我还没有看到使用Swift的好答案.
我正在寻找的是Swift中的代码片段,它将任意字符串作为文本消息的正文发送给给定的电话号码.从本质上讲,我希望像这样从苹果的官方文档,但是在斯威夫特,而不是Objective-C的.
我想这不是太难,因为它可以在Android中的几行代码中完成.
编辑:我正在寻找的是5-20行Swift代码,我不同意这是太宽泛了.在Java(适用于Android)中,解决方案如下所示:
package com.company.appname;
import android.app.Activity;
import android.telephony.SmsManager;
public class MainActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
public static final mPhoneNumber = "1111111111";
public static final mMessage = "hello phone";
SmsManager.getDefault().sendTextMessage(mPhoneNumber, null, mMessage, null, null);
}
}
Run Code Online (Sandbox Code Playgroud)
现在这是Android解决方案,它只有11行.Java的往往要比雨燕更详细的,所以我怀疑什么,我问的是"过于宽泛",但更有可能的是,我不知道如何使用Objective-C的MessageComposer对象,因为我链接的文档关于在Swift中的使用情况,上面的内容尚不清楚.
我试着清理我的钥匙串,因为它里面有很多证书.当我打开私钥部分时,我发现有太多相同的密钥.
我可以删除它们吗?我不知道它们的用途.请帮帮我!
我下载了Xcode 8测试版并尝试使用iMessages应用程序扩展程序sdk,但遇到了他们看似非标准导航栏高度的问题
当我转换到应用程序的展开视图时,带有以下框架的图像CGRect(x: 0, y: 0, width: 100, height: 100)
最终部分隐藏在导航栏后面.我希望它出现在导航栏下方.
我试过self.navigationController?.navigationBar.isTranslucent = false
但它不起作用,我认为这是有道理的,因为它超出了我的应用程序的控制范围.
我想iOS
为我的申请制作贴纸包.我一直在环顾四周,我设法通过Xcode做贴纸应用程序.我的问题是我不想要一个独立的贴纸应用程序.用户永远不会去商店单独下载.
我希望贴纸包含在我的经典应用程序中,比如"额外":"你已经下载了应用程序,谢谢你,这里有你可以在消息中使用的贴纸".
我试着像这里解释的那样做"添加目标"
但是当我运行我的应用程序时,我可以在我的消息传递应用程序中看到我的视图控制器但不能看到我
有谁可以帮助我吗 ?
有人可以告诉我如何通过消息应用程序直接向iMessage用户发送消息吗?
tell application "Messages"
if service type of service of buddy whose name is ("Name here" is "iMessage") then set x to 1
if service type of service of buddy whose name is ("Name here" is "iMessage") then set x to 2
if service type of service of buddy whose name is ("Name here" is "iMessage") then set x to 3
send "Message" to buddy "mail of name" of service x
end tell
Run Code Online (Sandbox Code Playgroud)
我只需要通过iMessage向帐户发送消息,而不是通过Google Talk,AIM,bonjour.谢谢!
在我的应用程序中,我需要将一些自定义数据文件从一个设备发送到另一个设备,我正在尝试使用Mail,iMessage/Message和Airdrop.
这适用于Mail和Airdrop但使用iMessage并且它很好,但在接收端,我无法打开文件.它只是不允许我对它做任何事情.
有任何想法吗??
这就是我的文档类型:
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeIconFile</key>
<string>abc.png</string>
<key>CFBundleTypeName</key>
<string>ABC Custom Data type</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>Handler Rank</key>
<string>Owner</string>
<key>LSItemContentTypes</key>
<array>
<string>com.company.abc.wd</string>
</array>
</dict>
</array>
Run Code Online (Sandbox Code Playgroud)
这就是我发送数据的方式:
NSMutableDictionary * dict = [NSMutableDictionary dictionary];
[dict setObject:currentDataSet forKey:@"actualData"];
NSData * meetingData = [NSKeyedArchiver archivedDataWithRootObject:dict];
Meeting * dataItem = [[Meeting alloc]initWithData:meetingData
type:@"com.abc.xyz.wd" subject:@"Meeting"
previewImage:[UIImage imageNamed:@"appIcon.png"]];
UIActivityViewController * activityController =
[[UIActivityViewController alloc]initWithActivityItems:@[dataItem]
applicationActivities:nil];
activityController.excludedActivityTypes =
@[UIActivityTypePostToTwitter, UIActivityTypePostToWeibo];
[self presentViewController:activityController animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud) iOS 10消息应用程序的导航栏在您按/弹出对话时(平滑过渡)增加/减少高度.
通常我会使用更高的自定义导航栏sizeThatFits:
,但它会持续存在于导航控制器中的视图控制器的推送和弹出中.
如何为导航序列(例如消息应用程序)中的某些视图控制器设置更高的导航栏?谢谢!
我正在试验iOS 10中的贴纸iMessage应用程序,我遇到了该override func didStartSending(_ message: MSMessage, conversation: MSConversation)
方法的问题MSMessagesAppViewController
.当从"剥离"贴纸时MSStickerView
,我希望能够获得某种didStartSending
方法的回调.但似乎情况并非如此.有没有人知道这是否是预期的行为和/或是否有另一种方式订阅回调时,这些贴纸被剥离,拖动,并放入MSConversation
?我意识到这didStartSending
是为用户点击发送按钮时保留的,但肯定应该有一些方法可以知道用户何时拖动MSStickers而不会将一些UIView拖动/矩形读取启发式混合在一起.
消息视图控制器:
class MessagesViewController: MSMessagesAppViewController {
var nYCStickersBroswerViewController: NYCStickersBroswerViewController!
override func viewDidLoad() {
super.viewDidLoad()
nYCStickersBroswerViewController = NYCStickersBroswerViewController(stickerSize: .regular)
nYCStickersBroswerViewController.view.frame = self.view.frame
self.addChildViewController(nYCStickersBroswerViewController)
nYCStickersBroswerViewController.didMove(toParentViewController: self)
self.view.addSubview(nYCStickersBroswerViewController.view)
nYCStickersBroswerViewController.loadStickers()
nYCStickersBroswerViewController.stickerBrowserView.reloadData()
}
...
override func didStartSending(_ message: MSMessage, conversation: MSConversation) {
// Called when the user taps the send button.
print(message) // should this not contain the sticker that is peeled, dragged, and …
Run Code Online (Sandbox Code Playgroud) 我为iOS 9的iOS应用程序定义并使用了自定义UTI类型.现在,在使用XCode 8和iOS 10后,如果通过iMessage发送文件,我无法"打开"该文件.如果我点击图标,虽然显示了正确的图标,但没有任何反应.如果是通过电子邮件发送的,我仍然可以将其导入我的应用程序.邮件和iMessage有区别吗?
我的info.plist声明如下所示:
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeIconFiles</key>
<array>
<string>Icon-60@3x</string>
</array>
<key>CFBundleTypeName</key>
<string>My Voting Lists File</string>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>LSHandlerRank</key>
<string>Owner</string>
<key>LSItemContentTypes</key>
<array>
<string>com.my-org.document.lists</string>
</array>
</dict>
</array>
Run Code Online (Sandbox Code Playgroud)
和
<key>UTExportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.text</string>
<string>public.data</string>
</array>
<key>UTTypeDescription</key>
<string>My Voting List File</string>
<key>UTTypeIdentifier</key>
<string>com.my-org.document.lists</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>mylist</string>
</array>
</dict>
</dict>
</array>
Run Code Online (Sandbox Code Playgroud)
我也搜索了一个解决方案,但没有找到对我有用的东西. 这个stackoverflow讨论没有帮助我:(任何想法改变了什么或我的错误是什么?提前感谢!
请使用Swift 4+
注意:我在iMessage扩展程序而不是标准iMessage视图中时正在检测屏幕截图。
更新-我想出了一个可行的解决方案,每隔0.3秒左右在敏感信息周期内检查一次照片库,以检查是否添加了新的屏幕截图。如果用户未授予照片库许可,则在他们启用照片库之前,不会向他们显示内容。但是,我仍在寻找其他创新解决方案,这些解决方案不一定涉及如此繁琐的过程。
我有一个iMessage扩展名,我正在尝试检测屏幕截图。我已经尝试过在网上找到的每个观察者,由于某种原因,它没有注册屏幕截图。
ViewWillAppear()
UIScreen.main.addObserver(self, forKeyPath: "captured", options: .new, context: nil)
Run Code Online (Sandbox Code Playgroud)
观察者
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey: Any]?, context: UnsafeMutableRawPointer?) {
if (keyPath == "captured") {
let isCaptured = UIScreen.main.isCaptured
print(isCaptured)
screenshot()
//screenshot() sends a message alerting the message was screens hotted. However, the print statement didn't even run.
}
}
Run Code Online (Sandbox Code Playgroud)
ViewWillDisappear()
UIScreen.main.removeObserver(self, forKeyPath: "captured", context: nil)
Run Code Online (Sandbox Code Playgroud)
我还尝试了标准的默认通知中心
let mainQueue = OperationQueue.main
NotificationCenter.default.addObserver(forName: UIApplication.userDidTakeScreenshotNotification, object: nil, queue: mainQueue) { notification in
// executes …
Run Code Online (Sandbox Code Playgroud)