iMessage
iMessageとは、AppleがiOS5において追加した、メッセージングサービスの名称である。
iMessageを利用すると、iOS5がインストールされたiPhone、iPad、iPod Touchの端末同士で、テキスト、写真、ビデオ、あるいは位置情報、連絡先情報といった情報を交換することができる。SMS(ショートメッセージングサービス)と同様の手軽さで、個人またはグループを相手にさまざまな情報をやり取りできる点が大きな特徴となっている。また、「開封確認」や「書き込み中」といった相手側の状況をリアルタイムで知ることができる。
なお、2011年10月現在、iMessageを利用するためには、自分と相手の双方がiOS5をインストールし、iCloudの設定を行う必要がある。
参照リンク
メッセージ - (Apple)
iPhone: | iPhone Dev Center iPhone 3GS iOS 5 iMessage iOSデバイス iPhone 4S iOS 5.1 |
IMessage インターフェイス
アセンブリ: mscorlib (mscorlib.dll 内)
構文
解説
IMessage を使用するメッセージ シンクは、クライアント シンク チェインまたはサーバー シンク チェイン内に配置できます。メッセージ オブジェクトは、これらのチェインを通じてメッセージ シンクから別のメッセージ シンクへと渡され、アクション ID、エンボイ情報、パラメータなどの一連の名前付きプロパティを一緒に転送します。
IMessage インターフェイスを実装するオブジェクトは、メッセージ オブジェクトと見なされるために必要な最低条件を満たしています。メッセージ シンクが受信したオブジェクトそのものが次のシンクに渡される必要はありませんが、通常はオブジェクトそのものが渡されます。
プロパティ バッグ内のオブジェクトはシリアル化可能である必要はありませんが、メッセージ シンクの実装側ではシリアル化可能であることを要求します。これは、アプリケーション ドメインの外部に転送されるプロパティはシリアル化できる必要があるためです。
' Create a custom 'RealProxy'. Public Class MyProxy Inherits RealProxy Private myURIString As String Private myMarshalByRefObject As MarshalByRefObject <PermissionSet(SecurityAction.LinkDemand)> _ Public Sub New(ByVal myType As Type) MyBase.New(myType) ' RealProxy uses the Type to generate a transparent proxy. myMarshalByRefObject = CType(Activator.CreateInstance(myType), MarshalByRefObject) ' Get 'ObjRef', for transmission serialization between application domains. Dim myObjRef As ObjRef = RemotingServices.Marshal(myMarshalByRefObject) ' Get the 'URI' property of 'ObjRef' and store it. myURIString = myObjRef.URI Console.WriteLine("URI :{0}", myObjRef.URI) End Sub 'New <SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags:=SecurityPermissionFlag.Infrastructure)> _ Public Overrides Function Invoke(ByVal myIMessage As IMessage) As IMessage Console.WriteLine("MyProxy.Invoke Start") Console.WriteLine("") If TypeOf myIMessage Is IMethodCallMessage Then Console.WriteLine("IMethodCallMessage") End If If TypeOf myIMessage Is IMethodReturnMessage Then Console.WriteLine("IMethodReturnMessage") End If Dim msgType As Type msgType = CObj(myIMessage).GetType Console.WriteLine("Message Type: {0}", msgType.ToString()) Console.WriteLine("Message Properties") Dim myIDictionary As IDictionary = myIMessage.Properties ' Set the '__Uri' property of 'IMessage' to 'URI' property of 'ObjRef'. myIDictionary("__Uri") = myURIString Dim myIDictionaryEnumerator As IDictionaryEnumerator = CType(myIDictionary.GetEnumerator(), _ IDictionaryEnumerator) While myIDictionaryEnumerator.MoveNext() Dim myKey As Object = myIDictionaryEnumerator.Key Dim myKeyName As String = myKey.ToString() Dim myValue As Object = myIDictionaryEnumerator.Value Console.WriteLine(ControlChars.Tab + "{0} : {1}", myKeyName, myIDictionaryEnumerator.Value) If myKeyName = "__Args" Then Dim myObjectArray As Object() = CType(myValue, Object()) Dim aIndex As Integer For aIndex = 0 To myObjectArray.Length - 1 Console.WriteLine(ControlChars.Tab + ControlChars.Tab + "arg: {0} myValue: {1}", _ aIndex, myObjectArray(aIndex)) Next aIndex End If If myKeyName = "__MethodSignature" And Not Nothing Is myValue Then Dim myObjectArray As Object() = CType(myValue, Object()) Dim aIndex As Integer For aIndex = 0 To myObjectArray.Length - 1 Console.WriteLine(ControlChars.Tab + ControlChars.Tab + "arg: {0} myValue: {1}", _ aIndex, myObjectArray(aIndex)) Next aIndex End If End While Dim myReturnMessage As IMessage myIDictionary("__Uri") = myURIString Console.WriteLine("__Uri {0}", myIDictionary("__Uri")) Console.WriteLine("ChannelServices.SyncDispatchMessage") myReturnMessage = ChannelServices.SyncDispatchMessage(CObj(myIMessage)) ' Push return value and OUT parameters back onto stack. Dim myMethodReturnMessage As IMethodReturnMessage = CType(myReturnMessage, IMethodReturnMessage) Console.WriteLine("IMethodReturnMessage.ReturnValue: {0}", myMethodReturnMessage.ReturnValue) Console.WriteLine("MyProxy.Invoke - Finish") Return myReturnMessage End Function 'Invoke End Class 'MyProxy
// Create a custom 'RealProxy'. public class MyProxy : RealProxy { String myURIString; MarshalByRefObject myMarshalByRefObject; [PermissionSet(SecurityAction.LinkDemand)] public MyProxy(Type myType) : base(myType) { // RealProxy uses the Type to generate a transparent proxy. myMarshalByRefObject = (MarshalByRefObject)Activator.CreateInstance((myType)); // Get 'ObjRef', for transmission serialization between application domains. ObjRef myObjRef = RemotingServices.Marshal(myMarshalByRefObject); // Get the 'URI' property of 'ObjRef' and store it. myURIString = myObjRef.URI; Console.WriteLine("URI :{0}", myObjRef.URI); } [SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.Infrastructure)] public override IMessage Invoke(IMessage myIMessage) { Console.WriteLine("MyProxy.Invoke Start"); Console.WriteLine(""); if (myIMessage is IMethodCallMessage) Console.WriteLine("IMethodCallMessage"); if (myIMessage is IMethodReturnMessage) Console.WriteLine("IMethodReturnMessage"); Type msgType = myIMessage.GetType(); Console.WriteLine("Message Type: {0}", msgType.ToString()); Console.WriteLine("Message Properties"); IDictionary myIDictionary = myIMessage.Properties; // Set the '__Uri' property of 'IMessage' to 'URI' property of 'ObjRef'. myIDictionary["__Uri"] = myURIString; IDictionaryEnumerator myIDictionaryEnumerator = (IDictionaryEnumerator) myIDictionary.GetEnumerator(); while (myIDictionaryEnumerator.MoveNext()) { Object myKey = myIDictionaryEnumerator.Key; String myKeyName = myKey.ToString(); Object myValue = myIDictionaryEnumerator.Value; Console.WriteLine("\t{0} : {1}", myKeyName, myIDictionaryEnumerator.Value); if (myKeyName == "__Args") { Object[] myObjectArray = (Object[])myValue; for (int aIndex = 0; aIndex < myObjectArray.Length; aIndex++) Console.WriteLine("\t\targ: {0} myValue: {1}", aIndex, myObjectArray[aIndex]); } if ((myKeyName == "__MethodSignature") && (null != myValue)) { Object[] myObjectArray = (Object[])myValue; for (int aIndex = 0; aIndex < myObjectArray.Length; aIndex++) Console.WriteLine("\t\targ: {0} myValue: {1}", aIndex, myObjectArray[aIndex]); } } IMessage myReturnMessage; myIDictionary["__Uri"] = myURIString; Console.WriteLine("__Uri {0}", myIDictionary["__Uri"]); Console.WriteLine("ChannelServices.SyncDispatchMessage"); myReturnMessage = ChannelServices.SyncDispatchMessage(myIMessage); // Push return value and OUT parameters back onto stack. IMethodReturnMessage myMethodReturnMessage = (IMethodReturnMessage) myReturnMessage; Console.WriteLine("IMethodReturnMessage.ReturnValue: {0}", myMethodReturnMessage.ReturnValue); Console.WriteLine("MyProxy.Invoke - Finish"); return myReturnMessage; } }
// Create a custom 'RealProxy'. /** @attribute SecurityPermission(SecurityAction.Demand, Flags = SecurityPermissionFlag.Infrastructure) */ public class MyProxy extends RealProxy { private String myURIString; private MarshalByRefObject myMarshalByRefObject; public MyProxy(Type myType) { super(myType); // RealProxy uses the Type to generate a transparent proxy. myMarshalByRefObject = (MarshalByRefObject)(Activator.CreateInstance(myType)); // Get 'ObjRef', for transmission serialization between // application domains. ObjRef myObjRef = RemotingServices.Marshal(myMarshalByRefObject); // Get the 'URI' property of 'ObjRef' and store it. myURIString = myObjRef.get_URI(); Console.WriteLine("URI :{0}", myObjRef.get_URI()); } //MyProxy public IMessage Invoke(IMessage myIMessage) { Console.WriteLine("MyProxy.Invoke Start"); Console.WriteLine(""); if (myIMessage instanceof IMethodCallMessage) { Console.WriteLine("IMethodCallMessage"); } if (myIMessage instanceof IMethodReturnMessage) { Console.WriteLine("IMethodReturnMessage"); } Type msgType = myIMessage.GetType(); Console.WriteLine("Message Type: {0}", msgType.ToString()); Console.WriteLine("Message Properties"); IDictionary myIDictionary = myIMessage.get_Properties(); // Set the '__Uri' property of 'IMessage' to 'URI' property of 'ObjRef'. myIDictionary.set_Item("__Uri", myURIString); IDictionaryEnumerator myIDictionaryEnumerator = (IDictionaryEnumerator)(myIDictionary.GetEnumerator()); while (myIDictionaryEnumerator.MoveNext()) { Object myKey = myIDictionaryEnumerator.get_Key(); String myKeyName = myKey.ToString(); Object myValue = myIDictionaryEnumerator.get_Value(); Console.WriteLine("\t{0} : {1}", myKeyName, myIDictionaryEnumerator.get_Value()); if (myKeyName.Equals("__Args")) { Object myObjectArray[] = (Object[])myValue; for (int aIndex = 0; aIndex < myObjectArray.length; aIndex++) { Console.WriteLine("\t\targ: {0} myValue: {1}", (Int32)aIndex, myObjectArray.get_Item(aIndex)); } } if (myKeyName.Equals("__MethodSignature") && null != myValue) { Object myObjectArray[] = (Object[])myValue; for (int aIndex = 0; aIndex < myObjectArray.length; aIndex++) { Console.WriteLine("\t\targ: {0} myValue: {1}", (Int32)aIndex, myObjectArray.get_Item(aIndex)); } } } IMessage myReturnMessage; myIDictionary.set_Item("__Uri", myURIString); Console.WriteLine("__Uri {0}", myIDictionary.get_Item("__Uri")); Console.WriteLine("ChannelServices.SyncDispatchMessage"); myReturnMessage = ChannelServices.SyncDispatchMessage(myIMessage); // Push return value and OUT parameters back onto stack. IMethodReturnMessage myMethodReturnMessage = (IMethodReturnMessage)myReturnMessage; Console.WriteLine("IMethodReturnMessage.ReturnValue: {0}", myMethodReturnMessage.get_ReturnValue()); Console.WriteLine("MyProxy.Invoke - Finish"); return myReturnMessage; } //Invoke } //MyProxy
Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
参照
IMessage プロパティ
IMessage メンバ
iMessage
iMessage
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/05/16 08:12 UTC 版)
iMessage(アイメッセージ)は、Appleが開発しているインスタントメッセージサービスである[1]。Appleのプラットフォーム(iOS、iPadOS、macOS、watchOS)でのみ機能する[2]。
- ^ a b c “iPhone、iPad、iPod touch でメッセージ App を使う”. Apple Support. 2021年5月24日閲覧。
- ^ “iMessage と SMS/MMS について”. Apple Support. 2021年5月24日閲覧。
- ^ Hoffman, Chris. “Apple’s iMessage Is Secure … Unless You Have iCloud Enabled” (英語). How-To Geek. 2021年5月24日閲覧。
- ^ a b “iMessage Appとステッカー”. Apple Developer. 2021年5月23日閲覧。
- ^ a b “iOSの新バージョンは、Notification Center、iMessage、Newsstand、Twitterとの連携など、200の新機能を搭載”. Apple Newsroom (日本). 2021年5月24日閲覧。
- ^ a b “アップル、OS X Mountain Lionを7月25日に発売すると発表”. ギズモード・ジャパン (2012年7月25日). 2021年5月24日閲覧。
- ^ “米Apple、「iOS 5」と「iCloud」を発表”. ケータイ Watch. 株式会社インプレス (2011年6月7日). 2021年5月24日閲覧。
- ^ “Apple、iPhone 4S、iOS 5およびiCloudの提供を開始”. Apple Newsroom (日本). 2021年5月24日閲覧。
- ^ “iOS 5アップデート、10月12日に配信開始 iCloudも同日スタート”. ITmedia Mobile. 2021年5月24日閲覧。
- ^ “Apple、100以上の新機能を搭載したOS X Mountain Lionのデベロッパプレビューをリリース”. Apple Newsroom (日本). 2021年5月24日閲覧。
- ^ “アップル、Mac向けOSの最新版「OS X Mountain Lion」を発表”. MdN Design Interactive. 2021年5月24日閲覧。
- ^ “Mountain Lion、Mac App Storeを通じて本日より提供開始”. Apple Newsroom (日本). 2021年5月24日閲覧。
- ^ Epstein, Zach (2012年10月23日). “Apple kicks off iPad mini event: 3 million new iPods sold, iOS 6 now on 200 million devices” (英語). BGR. 2021年5月23日閲覧。
- ^ Leswing, Kif. “Apple says people send as many as 200,000 iMessages per second” (英語). ビジネスインサイダー. 2021年5月23日閲覧。
- ^ Edwards, Jim. “Apple Has Been Sued Because iPhones Often Don't Deliver Text Messages To Android Users” (英語). ビジネスインサイダー. 2021年5月23日閲覧。
- ^ “Apple Sued Over Vanishing Texts After IPhones Swapped Out”. ブルームバーグ. 2021年5月23日閲覧。
- ^ “iPhone またはオンラインで iMessage の登録を解除する”. Apple Support. 2021年5月23日閲覧。
- ^ “電話番号の登録を削除して iMessage をオフにする - Apple サポート”. Apple Support. 2021年5月23日閲覧。
- ^ Slotnick, Stacy (2015年8月12日). “Apple Avoids Class Action Lawsuit Over iMessages” (英語). UrbanGeekz. 2021年5月23日閲覧。
- ^ “Dancing on the Lip of the Volcano: Chosen Ciphertext Attacks on Apple iMessage”. ジョンズ・ホプキンズ大学. 2021年5月23日閲覧。
- ^ Nakashima, Ellen (2016年3月21日). “Johns Hopkins researchers poke a hole in Apple’s encryption” (英語). ワシントン・ポスト. ISSN 0190-8286 2021年5月23日閲覧。
- ^ “Six months in, iMessage App Store growth slows as developers lose interest” (英語). TechCrunch. 2021年5月23日閲覧。
- ^ a b c “macOS「Big Sur」まとめ。iOSっぽくなったけどどう? #WWDC20”. ギズモード・ジャパン (2020年6月23日). 2021年5月23日閲覧。
- ^ “What’s the Difference Between iMessage vs SMS?” (英語). Xfinity. 2021年5月24日閲覧。
- ^ “How to use Apple’s iMessage on iOS 14”. Digital Trends. 2020年5月24日閲覧。
- ^ a b “Apple Has Finally Stuck A Dagger Into SMS. I Love It.” (英語). TechCrunch. 2021年5月23日閲覧。
- ^ “iMessage と SMS/MMS について”. Apple Support. 2021年5月23日閲覧。
- ^ “iPhoneの「メッセージ」機能の既読表示って使ってますか? | エンジョイ!マガジン”. BIGLOBE (2016年1月17日). 2021年5月24日閲覧。
- ^ “iOS 14: How to Use Bubble and Screen Effects in iMessage” (英語). iGeeksBlog (2020年3月12日). 2021年5月23日閲覧。
- ^ “How to use and send effects to iMessage (Bubble and Screen)” (英語). iTechCliq (2021年5月8日). 2021年5月23日閲覧。
- ^ “iPhoneのメッセージでアニメーション効果を送信する”. Apple Support. 2021年5月23日閲覧。
- ^ “Apple Explains Exactly How Secure iMessage Really Is” (英語). TechCrunch. 2021年5月23日閲覧。
- ^ IMessage - IMFreedom Wiki
- ^ a b c d e f “Apple Platform Security”. Apple. 2020年5月24日閲覧。
- ^ “ECDSA: The digital signature algorithm of a better internet” (英語). The Cloudflare Blog (2014年3月10日). 2021年5月24日閲覧。
- ^ a b “This Is How Apple Secures Your iMessage Messages And FaceTime Calls On Your Apple iPhone” (英語). News18 (2021年2月19日). 2021年5月24日閲覧。
- ^ a b Hauk, Chris (2021年1月11日). “Encrypted Messaging – What Is It, Why Should You Use It and What Are the Best Apps?” (英語). Pixel Privacy. 2021年5月24日閲覧。
- ^ “Text messaging is on decline in US, says report - Technology on NBCNews.com”. NBC. 2012年11月14日時点のオリジナルよりアーカイブ。2021年5月23日閲覧。
- ^ a b c “Secure Messaging Scorecard” (英語). 電子フロンティア財団 (2019年10月16日). 2021年5月23日閲覧。
- ^ Green, Matthew. “A Few Thoughts on Cryptographic Engineering” (英語). A Few Thoughts on Cryptographic Engineering. 2021年5月24日閲覧。
- 1 iMessageとは
- 2 iMessageの概要
- 3 技術
- 4 評価
- 5 脚注
- I messageのページへのリンク