TWI641994B - 用於與一或多個擴充應用程式互動之傳訊應用程式之方法、裝置及非暫時性機器可讀媒體 - Google Patents
用於與一或多個擴充應用程式互動之傳訊應用程式之方法、裝置及非暫時性機器可讀媒體 Download PDFInfo
- Publication number
- TWI641994B TWI641994B TW106118509A TW106118509A TWI641994B TW I641994 B TWI641994 B TW I641994B TW 106118509 A TW106118509 A TW 106118509A TW 106118509 A TW106118509 A TW 106118509A TW I641994 B TWI641994 B TW I641994B
- Authority
- TW
- Taiwan
- Prior art keywords
- application
- message
- messaging
- content
- messaging application
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/04—Real-time or near real-time messaging, e.g. instant messaging [IM]
- H04L51/046—Interoperability with other network applications or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
- G06F16/9566—URL specific, e.g. using aliases, detecting broken or misspelled links
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/07—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail characterised by the inclusion of specific contents
- H04L51/18—Commands or executable codes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/561—Adding application-functional data or data for application control, e.g. adding metadata
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/12—Messaging; Mailboxes; Announcements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/16—Obfuscation or hiding, e.g. involving white box
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/07—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail characterised by the inclusion of specific contents
- H04L51/08—Annexed information, e.g. attachments
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/58—Message adaptation for wireless communication
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Multimedia (AREA)
- Data Mining & Analysis (AREA)
- Library & Information Science (AREA)
- Human Computer Interaction (AREA)
- Information Transfer Between Computers (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
在一實施例中,一種傳訊系統包括一傳訊應用程式及一或多個擴充應用程式,該一或多個擴充應用程式經組態以建立顯示在由該傳訊應用程式裝載的一檢視中的內容。該傳訊應用程式可啟動該一或多個擴充應用程式,且可透過一程序間通訊於各擴充應用程式與該傳訊應用程式之間傳達內容。
Description
本申請案主張美國臨時專利申請案第62/349,101號(於2016年6月12日提出申請)之優先權,該臨時申請案係以引用方式併入本文中。本申請案亦關於且主張下列美國臨時專利申請案號之優先權(其等之全部係以引用方式併入本文中):第62/349,113號,2016年6月12日提出申請;以及第62/349,091號,2016年6月12日提出申請。
此揭露所述之實施例係關於傳訊系統(例如行動電話上之文字傳訊系統)或其他通信裝置或資料處理系統。
文字傳訊系統之使用始於許多年前。例如,在智慧型手機可用之前,於1990年代,無線蜂巢式電話運營商(例如Verizon或AT&T)允許通過用於行動電話之簡訊服務(SMS)的文字訊息。一般而言,所傳輸的資料量受到運營商所建立之規則的限制。近來,隨著智慧型手機(例如iPhone)及平板電腦(例如iPad)的使用增加,文字傳訊系統已發展出傳送影像(例如照片或表情符號(emoji))的能力。此外,傳訊系統(例如來自Cupertino,California之Apple Inc.的iMessage)已允許使用者亦通過「公眾(public)」網路傳送及接收文
字及影像,公眾網路包括「公眾」WiFi存取點及網際網路(Internet)(除了使用無線運營商之專用蜂巢式電話網路以外),且依據(例如)WiFi存取點之可用性或其他使用者裝置(其可能與iMessage不相容)之相容性,傳訊系統(例如iMessage)可在公眾網路及專用網路的使用之間無縫地轉換。
本文所描述之實施例之一態樣係關於一種傳訊系統,其在一用戶端裝置上包括一傳訊應用程式及一或多個擴充應用程式,該一或多個擴充應用程式經組態以建立顯示在由該傳訊應用程式裝載的一檢視中的內容。該傳訊應用程式可啟動該一或多個擴充應用程式,及在一實施例中,透過一程序間通訊於各擴充應用程式與該傳訊應用程式之間進行內容通訊。在一實施例中,一種方法可包括:由在一第一裝置上之一第一傳訊應用程式接收來自一第二裝置的一訊息及相關聯之後設資料,該訊息包括由一第二擴充應用程式建立的內容,該第二擴充應用程式搭配在該第二裝置上之一第二傳訊應用程式操作。在一實施例中,該第一傳訊應用程式及該第二傳訊應用程式各經組態以傳輸短訊息服務(SMS)文字訊息及其他內容,以及在一訊息文字記錄(message transcript)中顯示彼等文字訊息。該方法可進一步包括在該傳訊應用程式之一使用者介面檢視中的一訊息文字記錄中顯示該內容,及自該第一傳訊應用程式傳達該內容至藉由在該後設資料中之一應用程式識別符所識別之一第一擴充應用程式,透過一程序間通訊(IPC)自在一第一程序中執行的該第一傳訊應用程式傳達該內容至在一第二程序中執行的該第一擴充應用程式,該第二程序與該第一程序相
異。該方法可進一步包括在該第一傳訊應用程式之該使用者介面內顯示該第一擴充應用程式之一使用者介面。
在一實施例中,該第一擴充應用程式之該使用者介面經組態以:在該第二裝置上顯示該內容,諸如由該第二擴充應用程式建立的該內容;及接收使用者輸入以修改該內容。在一實施例中,該等擴充應用程式之各者之該使用者介面當顯示時可取代該傳訊應用程式之一螢幕鍵盤。在一實施例中,該第一擴充應用程式可修改該內容且透過一IPC傳遞經修改之該內容至該第一傳訊應用程式,以供傳輸至該第二傳訊應用程式,用於遞送至在該第二裝置上之該第二擴充應用程式。在一實施例中,該第一擴充應用程式及該第二擴充應用程式係相同擴充應用程式之兩個執行個體(instance)且各藉由相同應用程式識別符予以識別,可由提供該等擴充應用程式之下載的一應用程式市集或其他服務來提供該應用程式識別符。
在一實施例中,該第一擴充應用程式可經組態以接收其他裝置(第二裝置)之使用者之一模糊識別符,其中該模糊識別符可經組態成相對於在該第一裝置上之所有其他擴充應用程式,該模糊識別符對於該第一擴充應用程式係唯一的。該模糊識別符允許各擴充應用程式識別在一共同作業環境中的使用者,諸如其中多個使用者正在嘗試排程會議或預約餐廳訂位的一環境等。
在一實施例中,該第一擴充應用程式可變更由該傳訊應用程式裝載的該檢視。舉例而言,在一實施例中,該第一擴充應用程式可透過一應用程式設計介面(API)呼叫該第一傳訊應用程式,以請求變更在該第一傳訊應用程式內之該擴充應用程式之檢視。在一實施例中,該擴充應用程式之檢視之該變
更係介於一精簡檢視與一展開檢視之間之一切換。在一實施例中,在該精簡檢視中的該擴充應用程式之該使用者介面可顯示在顯示該第一傳訊應用程式之一螢幕鍵盤所在的一螢幕區域中,同時該第一傳訊應用程式之訊息文字記錄保持為可檢視。在另一實施例中,該擴充應用程式之該精簡檢視可顯示為在該螢幕鍵盤上之一覆疊。在一實施例中,在該展開檢視中的該擴充應用程式之檢視顯示在顯示該螢幕鍵盤及該訊息文字記錄兩者所在的一螢幕區域中,使得該訊息文字記錄係不可檢視,且該第一傳訊應用程式之該螢幕鍵盤亦係不可檢視。
在一實施例中,自該第二裝置接收的該後設資料可包括由該第一傳訊應用程式透過一IPC傳達至該第一擴充應用程式之一統一資源定位符(URL)或其他類型或形式之資源定位符(例如,一統一資源識別符(URI)、XML等)及資料,其中該資源定位符及資料維持介於在該第二裝置上之該第二擴充應用程式與在該第一裝置上之該第一擴充應用程式之間之工作階段資訊。在一實施例中,該等擴充應用程式透過在各裝置上裝載其等檢視的各自傳訊應用程式進行通訊。在一實施例中,各擴充應用程式可經組態以:修改該資源定位符或資料之至少一者;及透過傳訊應用程式兩者傳遞經修改之該資源定位符或該資料至該其他擴充應用程式。在一實施例中,可在一工作階段中實施該等資源定位符或資料之該修改,在該工作階段中,隨著由於在該通訊之任一方上之使用者互動而使在一訊息文字記錄中的相同工作階段泡泡內之資訊變更,隨時間顯示該泡泡。在一實施例中,各擴充應用程式亦可接收來自其相對應之傳訊應用程式的一回呼,其指示是否該另一擴充應用程式接收到經修改之該內容,諸如經修改之該資源定位符或資料。
本文所描述之實施例之另一態樣係關於如何回應於在由一傳訊應用程式呈現的一訊息文字記錄中之一訊息泡泡之一選擇而啟動一擴充應用程式。根據此態樣,一種方法可包括:由在一第一裝置上之一第一傳訊應用程式接收來自一第二裝置的一訊息及後設資料,該訊息包括由一第二擴充應用程式建立的內容,該第二擴充應用程式搭配在該第二裝置上之一第二傳訊應用程式操作。該方法可進一步包括在該傳訊應用程式中之一訊息文字記錄內之一訊息容器(諸如一訊息泡泡)中顯示該內容,及接著,接收該訊息容器之一選擇,諸如藉由一使用者之手指輕觸在該訊息泡泡上。該方法可進一步包括回應於該訊息泡泡之該選擇而啟動一第一擴充應用程式(若該第一擴充應用程式經安裝在該第一裝置上),其中藉由在接收自該第二裝置的該後設資料中之一應用程式識別符來識別該第一擴充應用程式以供啟動。在一實施例中,該方法可進一步包括在該啟動後,在該第一傳訊應用程式之該使用者介面內顯示該第一擴充應用程式之一使用者介面。在一實施例中,該訊息容器可係由該後設資料中之一泡泡識別符所指定的一訊息泡泡,且該內容可與該泡泡識別符相關聯,使得由該第二擴充應用程式建立的該內容出現在具有該泡泡識別符之該訊息泡泡內。在一實施例中,該第一傳訊應用程式及該第二傳訊應用程式各經組態以傳輸SMS文字訊息及其他內容,以及在一訊息文字記錄中之訊息泡泡中顯示該等文字訊息。在一實施例中,該第一傳訊應用程式及該第一擴充應用程式經組態以透過IPC進行通訊,且該第一傳訊應用程式在一第一沙箱化程序中執行,及該第一擴充應用程式在一第二沙箱化程序中執行,該第二沙箱化程序與該第一沙箱化程序相異。在一實施例中,在選擇該訊息泡泡之前,由該第一傳訊應用
程式顯示該內容,而無需啟動或執行該第一擴充應用程式;換言之,在一實施例中,不需要執行該第一擴充應用程式以藉由該第一傳訊應用程式在該訊息泡泡中顯示該內容。在一實施例中,一API可存在於該第一傳訊應用程式與該第一擴充應用程式之間以准許利用該API透過呼叫進行通訊。
在一實施例中,由該第一傳訊應用程式所接收之該內容係依一經加密形式予以接收且由該第一傳訊應用程式予以解密,並且透過一IPC傳遞經解密之該形式至該第一擴充應用程式。
在一實施例中,若未安裝該第一擴充應用程式,則該第一傳訊應用程式可提議下載及安裝該第一擴充應用程式。該第一傳訊應用程式可維持所安裝擴充應用程式之一登錄檔(例如,一清單),並且當舉例而言該使用者輕觸在具有由一特定擴充應用程式所建立之內容的一訊息泡泡上或選擇該訊息泡泡時,可使用此登錄檔以判定是否一擴充應用程式經安裝。若回應於該訊息泡泡之該選擇而該第一傳訊應用程式判定處理該內容所需之該特定擴充應用程式(如藉由連同該訊息所提供之一應用程式識別符所指定)未經安裝,則該第一傳訊應用程式可呈現一通知給該使用者,其給予該使用者用以選擇將致使該裝置下載及安裝該擴充應用程式的一選項。在一實施例中,可在背景中實行該擴充應用程式之該下載及安裝,同時該第一傳訊應用程式保持為在該裝置上之前景應用程式。
本文所描述之實施例之另一態樣係關於用於提供回溯相容性之方法,其可發生在當一裝置與一較舊裝置或具有不完全相容於較新傳訊系統之一較舊傳訊系統的一裝置通訊時之情況中。根據此態樣,在一實施例中,一種
方法可包括:由在一第一程序中執行之一擴充應用程式建立顯示在由在一第一裝置上之一第一傳訊應用程式裝載的一檢視內的內容,其中該第一傳訊應用程式在一第二程序中執行,該第二程序與該第一程序相異;及回應於致使該內容被傳送至一第二裝置的一傳送命令之一選擇,透過一程序間通訊將該內容自該擴充應用程式傳達至該第一傳訊應用程式。該方法可進一步包括由該第一傳訊應用程式依據關於該第二裝置之資料來判定在該第二裝置上之一第二傳訊應用程式不相容於該擴充應用程式,及接著,由該第一傳訊應用程式傳送一替代內容至該第二傳訊應用程式。在一實施例中,此替代內容可包括下列一或多者:(a)依一標準格式之一影像;或(b)一資源定位符,可使用該資源定位符以在該第二裝置上擷取一網頁。
本文所描述之實施例之另一態樣係關於一種應用程式市集或相似服務,在一實施例中,其可提供可自該應用程式市集或相似服務下載及安裝的擴充應用程式之可瀏覽檢視。在一實施例中,該等應用程式可免費獲得或可購買,及接著,下載及安裝在一使用者裝置上。在一實施例中,該下載可回應於選擇含有由尚未安裝在該接收裝置上之一擴充應用程式所建立之內容的一訊息泡泡而發生。在一實施例中,一種方法可包括下列操作:由在一第一裝置上之一第一傳訊應用程式接收來自一第二裝置的一訊息及相關聯之後設資料,其中該訊息包括由一第二擴充應用程式建立的內容,該第二擴充應用程式搭配在該第二裝置上之一第二傳訊應用程式操作,其中該相關聯之後設資料包括與該第二擴充應用程式相關聯之一應用程式識別符;在該第一傳訊應用程式之一使用者介面檢視中的一訊息文字記錄中顯示該內容;判定是否藉由該應用程式識
別符所識別之一第一擴充應用程式經安裝以供搭配該第一傳訊應用程式使用;顯示一通知給一使用者,該通知包括致使該第一裝置下載及安裝該第一擴充應用程式的一選項,其中回應於判定未安裝該第一擴充應用程式以供搭配該第一傳訊應用程式使用而顯示該通知;及回應於該選項之一選擇,下載及安裝該第一擴充應用程式。在一實施例中,回應於該使用者選擇在該訊息文字記錄中之該內容(例如,該使用者輕觸在該訊息文字記錄中之一訊息泡泡中之該內容上),該第一裝置判定藉由該應用程式識別符所識別之該第一擴充應用程式未經安裝。在一實施例中,自提供多個傳訊擴充應用程式以供下載的一服務下載該第一擴充應用程式,且由該服務提供該應用程式識別符。在一實施例中,該服務包括一或多個伺服器系統,該一或多個伺服器系統包括可自該服務下載的傳訊擴充應用程式之一可瀏覽目錄。在一實施例中,該第一擴充應用程式之該下載及安裝可發生在該第一傳訊應用程式保持為該前景應用程式時。在一實施例中,該方法可進一步包括:新增表示該第一擴充應用程式的一圖示至所安裝擴充應用程式之一可瀏覽檢視中,由該第一傳訊應用程式顯示該可瀏覽檢視;及該圖示之該新增發生在安裝該第一擴充應用程式後。
在一實施例中,該所安裝第一擴充應用程式可透過一IPC來與該第一傳訊應用程式通訊,該第一傳訊應用程式在一第一程序中執行,該第一程序不同於其中該第一擴充應用程式執行的該第二程序。
本文所描述之實施例之另一態樣係關於係影像建立應用程式的擴充應用程式,諸如可建立貼圖且可修改該等貼圖之外觀以及可允許置放該等貼圖在藉由一傳訊應用程式所提供的一訊息文字記錄中之一或多個訊息泡泡上
的應用程式。在此態樣之一實施例中,一種方法可包括下列操作:接收一選擇,以在藉由一傳訊應用程式所裝載的一貼圖擴充應用程式之一使用者介面檢視內建立一貼圖影像;接收一或多個使用者輸入,該一或多個使用者輸入指定對該所選擇貼圖影像的變更,該一或多個使用者輸入定義影像後設資料;透過介於該貼圖擴充應用程式與一第一傳訊應用程式之間之一程序間通訊,傳達該貼圖影像及影像後設資料至該第一傳訊應用程式;由該第一傳訊應用程式上傳該貼圖影像、一訊息及該影像後設資料至一或多個傳訊伺服器,用於遞送該訊息及該貼圖影像及該影像後設資料至一接收裝置;由該第一傳訊應用程式接收及儲存來自該一或多個傳訊伺服器之一符記(token),該符記表示該貼圖影像;回應於傳送該貼圖影像至該接收裝置或至其他接收裝置的一後續請求,由該第一傳訊應用程式傳送該符記至該一或多個傳訊伺服器,而無需亦再次傳送該貼圖影像。在一實施例中,該方法亦可包括由該貼圖擴充應用程式在由該第一傳訊應用程式所裝載的一檢視中顯示一組貼圖影像,可由一使用者選擇各貼圖影像以與在由該第一傳訊應用程式所提供之一訊息文字記錄中檢視中之一訊息泡泡中之一訊息相關聯。在一實施例中,該使用者藉由拖曳該貼圖影像至該訊息泡泡上而使一貼圖影像與一訊息泡泡相關聯。在一實施例中,該影像後設資料可包括下列一或多者:(a)按比例調整資料,其用以改變該貼圖影像之一大小;(b)旋轉資料,其用改變在該訊息泡泡上之該貼圖影像之一旋轉或位向;(c)在該訊息或訊息泡泡上之該貼圖影像之位置資料;或其他影像修改資料(例如透明度或顏色變化等)。在一實施例中,由該傳訊系統限制該貼圖影像之資料量以保持低於一預定極限。該第一傳訊應用程式在該第一傳訊應用程式之一檢視內
的一訊息文字記錄中之訊息上顯示該貼圖影像,且可藉由該影像後設資料指定在該訊息上的該貼圖影像之大小及旋轉及位置。在一實施例中,當該訊息(連同該貼圖影像)傳送至多個接收裝置時,該第一傳訊應用程式可針對各接收裝置加密該貼圖影像以產生多個經加密貼圖影像。舉例而言,在一實施例中,可使用各接收裝置之一公開金鑰以加密該貼圖影像(或加密用以加密該貼圖影像的一金鑰),且各不同接收裝置可具有不同公開金鑰。在一實施例中,可使用一非對稱加密演算法(諸如一公開金鑰/私密金鑰加密演算法)以加密該等貼圖影像(或用以加密該等影像的該等金鑰)。該方法亦可包括接收來自該一或多個傳訊伺服器的該符記之一存留時間(TTL)值,回應於傳送相對應於該符記之該貼圖影像的該後續請求,在該第一傳訊應用程式處且在該一或多個傳訊伺服器處再新該TTL值。在一實施例中,該方法亦可包括:由該第一傳訊應用程式依據關於該接收裝置之資料來判定在該接收裝置上之該傳訊應用程式不相容於該貼圖應用程式;及當該傳訊應用程式不相容於該貼圖應用程式時,由該第一傳訊應用程式傳送替代內容至該接收裝置。
本文所描述之實施例之另一態樣係關於用於使用影像後設資料以在一接收裝置上演現一最終貼圖影像之方法。根據此態樣,在一實施例中,一種方法包括下列操作:由在一第一裝置上之一第一傳訊應用程式接收來自一第二裝置的一訊息及一符記以及相關聯之後設資料(其可包括影像後設資料),該符記參照由一第二貼圖擴充應用程式所建立之一貼圖影像,該第二貼圖擴充應用程式搭配在該第二裝置上之一第二傳訊應用程式操作;由該第一傳訊應用程式傳送該符記至該一或多個傳訊伺服器以獲得該貼圖影像;回應於傳
送該符記,由該第一傳訊應用程式接收該貼圖影像,且藉由應用該影像後設資料至該貼圖影像而產生一最終影像;及由該第一傳訊應用程式在含有該訊息之一訊息泡泡上或附近顯示該最終影像。在一實施例中,該第一傳訊應用程式在一第一程序中執行,及該第一貼圖擴充應用程式在一第二程序中執行,該第二程序與該第一程序相異,且其中藉由一泡泡識別符來識別該訊息泡泡。在一實施例中,該第一傳訊應用程式接收依一經加密形式之該貼圖影像且解密該貼圖影像,並且透過一IPC提供經解密之該形式之該貼圖影像至該第一貼圖擴充應用程式。在一實施例中,該影像後設資料包含下列一或多者:(a)按比例調整資料,其用以改變該貼圖影像之一大小;(b)旋轉資料,其用以改變該影像貼圖之一旋轉;或(c)其他影像修改資料。在一實施例中,在傳送該符記之前,該第一傳訊應用程式使用該貼圖影像之一雜湊以判定是否該第一傳訊應用程式已經具有該貼圖影像之一複本;在一實施例中,在該相關聯之後設資料或該影像後設資料中可含有該雜湊。在一實施例中,該方法亦可包括自動回應於接收該訊息而啟動該第一貼圖擴充應用程式,其中該啟動發生而無需使用者動作或介入。
本文所描述之實施例之另一態樣係關於用於在一傳訊系統中操作一或多個傳訊伺服器之系統及方法。根據此態樣,在一實施例中,一種方法包括下列操作:接收來自一第一傳訊應用程式的複數個經加密貼圖影像,以供遞送至複數個收件者,當經解密時,該複數個經加密貼圖影像之各者當經解密時表示相同貼圖影像;建立及傳輸複數個符記至該第一傳訊應用程式,該複數個符記之各者經指派給該複數個收件者之一者;針對該等經加密貼圖影像之各者建立一存留時間(TTL)值且傳輸該等TTL值之至少一者至該第一傳訊應用程
式;儲存該複數個經加密貼圖影像以及該複數個符記及該等TTL值;及回應於該第一傳訊應用程式再次傳送相同貼圖影像至在該複數個收件者中的該等收件者之一者,接收來自該第一傳訊應用程式的在該複數個符記中的該等符記之一者,且再新相對應於該所接收符記的該TTL值。在一實施例中,該方法亦可包括回應於在一接收裝置上之一第二傳訊應用程式傳送在該複數個符記中的該等符記之一者,而傳送一經加密貼圖影像至該第二傳訊應用程式,該所傳送符記相對應於該所傳送經加密貼圖。在一實施例中,可實行此方法的該一或多個傳訊伺服器亦可接收複數個經加密訊息,一經加密訊息用於該複數個收件者之各者。在一實施例中,該一或多個傳訊伺服器可儲存該複數個經加密貼圖影像、該複數個符記及該等TTL值於一組一或多個資料庫中。在一實施例中,該方法亦可包括接收來自該第一傳訊應用程式的與相同貼圖影像相關聯之後設資料,及傳輸該後設資料至該第二傳訊應用程式。在一實施例中,此後設資料可係下列至少一者:(a)由一服務所提供之一貼圖擴充應用程式識別符,可自該服務下載擴充應用程式;或(b)藉由搭配該第二傳訊應用程式操作的該貼圖擴充應用程式所使用的影像後設資料,以建立一經修改貼圖影像。
雖然前文實例描述TTL值用於貼圖及貼圖影像使用TTL值,但是在本文所描述之一或多項實施例中,TTL值可用於在一傳訊系統中傳送或儲存或接收的其他物件及內容。
在一或多項實施例中,可顯示在一訊息文字記錄中之一貼圖之來源的一指示項。此可允許該貼圖之一收件者查看該貼圖的傳送者。在一實施例中,該指示項可係醒目提示或環繞在該訊息文字記錄中之該貼圖的一顏色,
或替代地,一收件者可選擇該貼圖,其可致使顯示一貼圖細節視窗,該貼圖細節視窗顯示關於該貼圖之細節,包括該貼圖之原創者或開發者(或其他來源)及可已修改該貼圖的傳送者。在一實施例中,在一接收裝置第一次接收一貼圖時,在該訊息文字記錄中顯示之該貼圖之來源或其他屬性可自動顯示在該訊息文字記錄中達一短時期,且其後不顯示該貼圖的關於來源或屬性之資訊。
在一實施例中,一種用於結合一傳訊應用程式操作之方法可依不同方式啟動一擴充應用程式,此取決於擴充應用程式之類型,或取決於關於擴充應用程式的原則。在一實施例中,一種方法可包括下列操作:回應於由一傳訊應用程式接收含有由一擴充應用程式所建立之內容的一訊息,判定該擴充應用程式之一類型;若該擴充應用程式係一第一類型之擴充應用程式或該擴充應用程式之一原則允許啟動(例如,一擴充應用程式請求立即啟動並且該傳訊應用程式授與該類型之擴充應用程式或請求的該請求,或該擴充應用程式係一預定類型或其內容係一預定類型),則回應於收到該訊息而自動啟動該擴充應用程式;若該擴充應用程式係一第二類型之擴充應用程式(或一原則命令延後啟動),則延後啟動該擴充應用程式,直到接收對在由該傳訊應用程式顯示的一訊息文字記錄中顯示的一訊息泡泡之一選擇。在一實施例中,自選擇在該訊息文字記錄中之該訊息泡泡的一使用者接收該選擇。在一實施例中,該等擴充應用程式指定是否其操作為該第一類型或該第二類型之擴充應用程式,及該傳訊應用程式可應用一或多個原則以允許自動立即啟動或延後啟動該擴充應用程式。在一實施例中,當使用者自該第一類型之擴充應用程式選擇顯示內容的一訊息泡泡時,該擴充應用程式在收到時啟動但是保持為在背景中(及在一實施
例中,可在背景中時更新在其訊息泡泡中之內容),直到一使用者致使該擴充應用程式顯示在前景中(例如,在精簡檢視模式中顯示,而代替螢幕鍵盤)。
本文所描述之實施例之另一態樣係關於在兩個裝置的兩個擴充應用程式之間之一工作階段中使用階層連結(breadcrumb)。在一實施例中,一種用於使用階層連結之方法可包括下列操作:在一訊息文字記錄中顯示含有由一第一擴充應用程式所建立之第一內容(或與該第一內容相關聯)的一第一訊息泡泡,該第一訊息泡泡具有經維持以供一第一傳訊應用程式使用的一工作階段識別符;在一第一裝置上之該第一傳訊應用程式接收一工作階段之第二內容,該工作階段發生於該第一擴充應用程式與在一第二裝置上之一第二擴充應用程式之間,其中藉由該工作階段識別符來識別該工作階段;轉換該第一內容成一階層連結及顯示含有該第二內容(或與該第二內容相關聯)之一第二訊息泡泡,其中該第一傳訊應用程式使該工作階段識別符與該階層連結及該第二訊息泡泡兩者相關聯。在一實施例中,該第一擴充應用程式提供待顯示為該階層連結之至少一部分的第三內容。在一實施例中,由在該第二裝置上之該第二擴充應用程式建立該第二內容,且透過在該第二裝置上之一第二傳訊應用程式傳輸該第二內容至該第一裝置。在一實施例中,該第一傳訊應用程式轉換該第一內容成該階層連結。
可藉由資料處理系統實施本文所描述之方法及系統,諸如一或多個智慧型手機、平板電腦、桌上型電腦、膝上型電腦、智慧型錶、可佩帶件、音訊配件、機載電腦及其他資料處理系統以及其他消費者電子裝置。可藉由執行可執行電腦程式指令的一或多個資料處理系統實施本文所描述之方法及
系統,該可執行電腦程式指令儲存在一或多個非暫時性機器可讀媒體中,當執行該等程式指令時,致使該一或多個資料處理系統實行本文所描述之一或多種方法。因此,本文所描述之實施例可包括方法、資料處理系統及非暫時性機器可讀媒體。
上文[發明內容]不包括本揭露中之所有實施例之一窮舉清單。所有系統及方法可自上文概述且亦於下文[實施方式]中揭示之各種態樣及實施例的所有合適之組合予以實踐。
10‧‧‧通訊裝置
10A‧‧‧通訊裝置
12‧‧‧觸控式螢幕
12A‧‧‧觸控式螢幕
14‧‧‧使用者名稱
14A‧‧‧使用者名稱
16‧‧‧訊息文字記錄
16A‧‧‧訊息文字記錄
17‧‧‧訊息泡泡
17A‧‧‧訊息泡泡
18‧‧‧文字鍵入區域
18A‧‧‧文字鍵入區域
19‧‧‧訊息泡泡
20‧‧‧螢幕鍵盤
20A‧‧‧螢幕鍵盤
22‧‧‧圖示;擴充應用程式檢視圖示
23‧‧‧圖示;成像應用程式檢視圖示
24‧‧‧圖示;相機應用程式檢視圖示
50‧‧‧傳訊系統
51‧‧‧傳訊伺服器
52‧‧‧資料庫
53‧‧‧用戶端裝置
54‧‧‧用戶端裝置
75‧‧‧傳訊系統
76‧‧‧傳訊應用程式
77‧‧‧撰寫模組
79‧‧‧資料傳輸模組
81‧‧‧程序間通訊(IPC)
83‧‧‧擴充應用程式
85‧‧‧內容
86‧‧‧文字訊息
87‧‧‧圖示
101‧‧‧操作
103‧‧‧操作
105‧‧‧操作
107‧‧‧操作
109‧‧‧操作
150‧‧‧通訊裝置
151‧‧‧觸控式螢幕
153‧‧‧訊息文字記錄
155‧‧‧使用者名稱;文字鍵入區域
157‧‧‧可瀏覽檢視
159‧‧‧頁面指示項
161‧‧‧預約餐廳訂位應用程式圖示
163‧‧‧圖示
165‧‧‧擴充應用程式圖示
167‧‧‧圖示
169‧‧‧圖示
171‧‧‧擴充應用程式圖示
200‧‧‧通訊裝置
201A‧‧‧訊息文字記錄
202‧‧‧觸控式螢幕
203‧‧‧使用者名稱
207‧‧‧圖示
211‧‧‧文字鍵入區域
212‧‧‧繪圖控制件
215‧‧‧繪圖畫布
215A‧‧‧繪圖畫布
217‧‧‧塗鴉選項
219‧‧‧心跳選項
221‧‧‧輕觸選項
223‧‧‧展開檢視圖示
223A‧‧‧精簡檢視圖示
230‧‧‧訊息泡泡
231‧‧‧遞送指示項
232‧‧‧保留控制件
235‧‧‧相機啟動圖示
250‧‧‧通訊裝置
253‧‧‧訊息泡泡
255‧‧‧螢幕鍵盤
259‧‧‧通知
301‧‧‧操作
303‧‧‧操作
305‧‧‧操作
307‧‧‧操作
309‧‧‧操作
311‧‧‧操作
313‧‧‧操作
351‧‧‧操作
353‧‧‧操作
357‧‧‧操作
359‧‧‧操作
361‧‧‧操作
363‧‧‧操作
365‧‧‧操作
400‧‧‧傳訊系統
401‧‧‧用戶端裝置
403‧‧‧傳訊伺服器
405‧‧‧用戶端裝置;第一裝置
407‧‧‧擴充應用程式
409‧‧‧傳訊應用程式
411‧‧‧傳訊應用程式
413‧‧‧擴充應用程式
415‧‧‧程序間通訊(IPC)
417‧‧‧內容及資源定位符及資料
419‧‧‧通訊
421‧‧‧訊息泡泡
423‧‧‧程序間通訊(IPC)
425‧‧‧資源定位符及資料
427‧‧‧資源定位符及資料
451‧‧‧操作
453‧‧‧操作
455‧‧‧操作
457‧‧‧操作
459‧‧‧操作
461‧‧‧操作
463‧‧‧操作
465‧‧‧操作
467‧‧‧操作
469‧‧‧操作
471‧‧‧訊息泡泡
473‧‧‧進度條
501‧‧‧操作
503‧‧‧操作
505‧‧‧操作
510‧‧‧訊息文字記錄
511‧‧‧Lester之使用者名稱
512‧‧‧訊息泡泡
513‧‧‧訊息泡泡
514‧‧‧訊息泡泡
515‧‧‧內容
515A‧‧‧階層連結
517‧‧‧訊息文字記錄
518‧‧‧Joe之使用者名稱
519‧‧‧暫存區
520‧‧‧文字訊息
520A‧‧‧訊息泡泡
521‧‧‧經修改或新內容
523‧‧‧傳送按鈕
551‧‧‧操作
553‧‧‧操作
555‧‧‧操作
557‧‧‧操作
600‧‧‧通訊裝置
601‧‧‧觸控式螢幕
603‧‧‧訊息文字記錄
605‧‧‧訊息泡泡
607‧‧‧訊息泡泡
609‧‧‧精簡檢視
651‧‧‧操作
653‧‧‧操作
655‧‧‧操作
657‧‧‧操作
675‧‧‧通訊裝置
679‧‧‧觸控式螢幕
681‧‧‧訊息文字記錄
683‧‧‧文字鍵入區域
685‧‧‧螢幕鍵盤
687‧‧‧訊息泡泡
689‧‧‧影像
691‧‧‧資源定位符
701‧‧‧操作
703‧‧‧操作
705‧‧‧操作
707‧‧‧操作
709‧‧‧操作
711‧‧‧操作
725‧‧‧傳訊擴充應用程式市集
726‧‧‧應用程式
727‧‧‧觸控式螢幕
728‧‧‧應用程式
729‧‧‧導覽列
731‧‧‧應用程式
800‧‧‧傳訊系統
801‧‧‧傳訊伺服器
802‧‧‧資料庫
803‧‧‧傳送裝置
805‧‧‧接收裝置
811‧‧‧傳送
812‧‧‧接收
813‧‧‧接收
815‧‧‧傳送
819‧‧‧傳送
821‧‧‧列
823‧‧‧列
831‧‧‧通信裝置
835‧‧‧貼圖檢視
839‧‧‧訊息泡泡
841‧‧‧貼圖影像
843‧‧‧貼圖
851‧‧‧操作
853‧‧‧操作
855‧‧‧操作
857‧‧‧操作
859‧‧‧操作
875‧‧‧操作
877‧‧‧操作
879‧‧‧操作
881‧‧‧操作
891‧‧‧操作
893‧‧‧操作
1303‧‧‧處理器
1305‧‧‧記憶體
1307‧‧‧非揮發性記憶體
1309‧‧‧匯流排
1315‧‧‧輸入/輸出(I/O)控制器
1317‧‧‧輸入/輸出裝置
1322‧‧‧顯示器控制器
1323‧‧‧顯示器裝置
1325‧‧‧網路裝置
3200‧‧‧API架構
3210‧‧‧API實施組件
3220‧‧‧API
3230‧‧‧API呼叫組件
本發明係經由實例說明,且不受伴隨圖式之圖的限制,在伴隨圖式中,相似的參考數字指示類似的元件。
〔圖1A〕顯示用於一通信裝置上之一傳訊應用程式(app)的一使用者介面的一實例。
〔圖1B〕顯示用於一通信裝置上之一傳訊應用程式的一使用者介面的另一實例。
〔圖2〕顯示一傳訊系統的一實例,其利用一或多個傳訊伺服器來提供一傳訊服務予用戶端裝置(client device)之一集合。
〔圖3A〕顯示根據一實施例之用於提供搭配一傳訊應用程式使用之擴充應用程式之一架構的方塊圖。
〔圖3B〕顯示根據本文之一實施例之一訊息泡泡之一使用者介面的一實例,該訊息泡泡至少部分藉由一擴充應用程式產生。
〔圖3C〕顯示基於一模板之一訊息泡泡的部件之一實例。
〔圖4A〕係根據本文所述之一或多個實施例之流程圖,其顯示根據一實施例之一方法,該方法用於自一傳訊應用程式內瀏覽、選擇、及啟動一擴充應用程式。
〔圖4B〕顯示根據本文所述之一實施例之用於一傳訊應用程式之一使用者介面的一實例,其包括已安裝之擴充應用程式的可瀏覽檢視。
〔圖5A〕顯示一傳訊應用程式之一使用者介面的一實例,其包括該傳訊應用程式之使用者介面內之一擴充應用程式的檢視。
〔圖5B〕顯示在使用者已於擴充應用程式中創建內容後,一擴充應用程式之一使用者介面的一實例,其中擴充應用程式的檢視係裝載(hosted)於該傳訊應用程式之使用者介面內。
〔圖5C〕顯示在使用者已使用一擴充應用程式創建內容且已藉由使用傳訊應用程式傳送內容來傳送內容後,一通信裝置上之一傳訊應用程式之一使用者介面的一實例。
〔圖5D〕顯示在接收裝置接收於傳送裝置上藉由一擴充應用程式創建之內容後,一接收裝置上之一傳訊應用程式中之一使用者介面的一實例。
〔圖5E〕顯示當接收裝置之使用者選擇含有由傳送裝置上之擴充應用程式所創建之內容的訊息泡泡,以便接收裝置之使用者可編輯接收裝置上的內容後,一接收裝置上之一使用者介面的一實例。
〔圖5F〕顯示一使用者介面的一實例,其提議下載及安裝一擴充應用程式以搭配裝置上之傳訊應用程式使用。
〔圖6〕係根據本文所述之一實施例的流程圖,其繪示可在一接收裝置上實行的一方法。
〔圖7A〕係根據一實施例的流程圖,其描繪根據一實施例之一方法,其中一擴充應用程式可改變由一傳訊應用程式裝載之其檢視。
〔圖7B〕以展開圖顯示根據一實施例之一擴充應用程式之一使用者介面的一實例。
〔圖8〕顯示根據一實施例的一實例,其中二或更多個裝置上之擴充應用程式可通過各裝置上的傳訊應用程式彼此互動。
〔圖9A〕係流程圖,其繪示根據本文所述之一或多個實施例之一方法,該方法用於允許不同裝置上之擴充應用程式之間的互動。
〔圖9B〕顯示當二或更多個擴充應用程式在一工作階段中互動時,一使用者介面中之一訊息泡泡的一實例,其可得自圖9A所示之方法。
〔圖9C〕顯示根據一實施例之一訊息泡泡的一實例,其中對一所需擴充應用程式之一下載及安裝係在傳訊應用程式保持在前景中時發生。
〔圖9D、圖9E、圖9F、圖9G、及圖9H〕顯示在兩個不同裝置上之訊息文字記錄的一實例,訊息文字記錄係包含在兩傳訊應用程式(各裝置上各有一個傳訊應用程式)之間的一交談中,其中交談涉及兩擴充應用程式之間的一工作階段。
圖9D、圖9E、圖9F、圖9G、及圖9H所示之使用者介面顯示根據本文所述之一或多個實施例之由擴充應用程式所創建之訊息泡泡中的內容如何可轉換成階層連結(breadcrumb)。
〔圖10〕係根據本文所述之一實施例的流程圖,其繪示一方法。
〔圖11〕係根據本文所述之一實施例的流程圖,其繪示一方法。
〔圖12〕顯示一傳訊應用程式之一使用者介面,其中來自二或更多個不同擴充應用程式的內容係呈現於傳訊應用程式所提供之相同的訊息文字記錄內。
〔圖13A〕係流程圖,其顯示根據一實施例之一方法,該方法用於針對較老舊裝置或較老舊傳訊系統提供反向相容性。
〔圖13B〕顯示一使用者介面的一實例,其中反向相容性已在一傳訊應用程式內提供。
〔圖14A〕顯示根據一實施例之一方法,其中一接收裝置(其已接收一訊息)下載及安裝一所需的擴充應用程式以觀看或與訊息之一者中的內容互動。
〔圖14B〕顯示一擴充應用程式市集或服務之一使用者介面的一實例,可自該擴充應用程式市集或服務下載及安裝擴充應用程式。
〔圖15〕顯示根據一實施例的一實例,該實例用於提供在傳送裝置及接收裝置兩者上使用貼圖(sticker)擴充應用程式之一傳訊系統。
〔圖16A〕係流程圖,其繪示根據一實施例之一方法,該方法可在圖15所示之系統中實行。
〔圖16B〕係流程圖,其繪示根據一實施例之另一方法,該方法可以圖15所示之系統實行。
〔圖16C〕顯示一傳訊應用程式之根據一實施例的一使用者介面,其裝載已用於在傳訊應用程式之訊息文字記錄中的一訊息上創建及應用貼圖之一貼圖擴充應用程式的檢視。
〔圖17〕係方塊圖,其繪示一例示性API架構,該架構可用於本文所述之實施例的一或多者中。
〔圖18〕顯示方塊圖,其繪示一軟體堆疊,該軟體堆疊可包括操作系統中的一或多個應用及服務。
〔圖19〕顯示一資料處理系統的一實例,其可用於本文所述之一或多個實施例中。
將參照下文論述之細節描述各種實施例及態樣,及附圖將繪示各種實施例。以下說明及圖式係闡釋性且不視為限制。描述許多特定細節經以提供對各種實施例之徹底瞭解。然而,在某些例子中,未描述已熟知或習知細節,以提供實施例之簡潔論述。
在專利說明書通篇指稱的「一實施例(one embodiment或an embodiment)」係指結合該實施例描述之具體特徵、結構、組態、或特性可包括在至少一實施例中。此專利說明書通篇於各處出現之詞組「在一實施例中(in one embodiment)」不必然指稱相同實施例。圖式中描繪的程序係藉由處理邏輯實行,處理邏輯包含硬體(例如電路系統,專用邏輯等)、軟體、或硬體與軟體之一組合。雖然下文就一些循序操作描述程序,然而應理解,所描述之操作之一些可依不同順序實行。另外,一些操作可平行實行,而非循序實行。
本文所描述之各種實施例係關於傳訊系統,諸如文字傳訊系統或「聊天」傳訊系統或允許裝置於裝置之間進行訊息通訊的其他系統。舉例而
言,來自Apple Inc.(Cupertino,California)的iMessag係適用於iOS裝置及Mac(OS X)電腦的傳訊服務之實例。典型地,一傳訊系統包括:複數個用戶端裝置,各用戶端裝置包括至少一傳訊應用程式;及一組一或多個傳訊伺服器,傳訊伺服器可接收來自用戶端裝置之訊息及傳輸訊息至用戶端裝置。圖1A展示在一用戶端裝置上之一傳訊應用程式之一使用者介面之實例。該用戶端裝置可係一通訊裝置10,其可係一智慧型手機、或平板電腦、或一桌上型電腦或一膝上型電腦、可佩帶件、機載電腦、或其他資料處理系統或其他消費者電子裝置。在一實施例中,該裝置可包括一習知觸控式螢幕,該習知觸控式螢幕可顯示影像且亦可接受來自使用者的觸控輸入。在該通訊裝置上之觸控式螢幕12可顯示該傳訊應用程式之該使用者介面,其可包括一訊息文字記錄16及一螢幕鍵盤20,螢幕鍵盤20在訊息文字記錄16下方。此外,該傳訊應用程式之該使用者介面可包括一使用者名稱14,在一實施例中,使用者名稱14指示自通訊裝置10傳送之訊息的收件者。此外,該使用者介面可包括一文字鍵入區域18,其指示由使用者鍵入之文字在傳送前的內容;在某種意義上,文字鍵入區域18係一文字暫存區,其指示準備好傳送至收件者的文字。
圖1B展示在一通訊裝置10A上之一傳訊應用程式之一使用者介面之更詳細實例。在此實施例中,該使用者介面顯示在觸控式螢幕12A上且包括螢幕鍵盤20A、文字鍵入區域18A、一訊息文字記錄16A及一使用者名稱14A,使用者名稱14A展示訊息收件者及訊息寄件者的(多個)其他使用者之名稱。文字鍵入區域18A係用於準備好回應於使用者選擇傳送命令而傳送之內容的一暫存區,諸如文字、貼圖、擴充應用程式內容、影像等之一或多者,
(及在一實施例中,可在該暫存區中編輯該內容)。在圖1B所展示之實例中,來自Freddy(使用者名稱14A)之訊息展示在訊息文字記錄16A之左側上,及由通訊裝置10A之使用者所傳送之訊息展示在訊息文字記錄16A之右側上。因此,作為對來自Freddy之訊息「一起晚餐嗎?」之回應,訊息泡泡17展示由通訊裝置10A之使用者傳送至Freddy訊息「約那裡?」。訊息泡泡17中之訊息致使Freddy用訊息泡泡19中展示之「這裡如何?」作出回應。使用字詞「泡泡」(諸如訊息泡泡或工作階段泡泡等)無意於暗示任何特定形狀或形式;而是意圖意指區分兩個或更多個參與者之間之訊息的任何形狀或形式,且因此該區分可使用方框或線或訊息容器或不同顏色等。因此詞組「訊息泡泡」意指涵蓋兩個或更多個參與者之間之訊息的所有此類區分(或其他區別方式),且尤其在此類區分及在一訊息文字記錄中進行區別之其他方式的內容脈絡中。在一實施例中,該訊息文字記錄可上下捲動,並且在該訊息文字記錄中之訊息係根據其等之時間予以依序呈現,因此使用者可藉由上下捲動檢視來查看一段時間的實際聊天或交談。在圖1B中所展示之使用者介面亦包括在螢幕鍵盤20A上方之及在文字鍵入區域18A左側之三個圖示22、23、及24。當經選擇時,擴充應用程式檢視圖示22致使顯示可搭配該傳訊應用程式操作的所安裝擴充應用程式之一檢視,且所提供之該檢視可係一可瀏覽檢視(諸如在圖4B中所展示之可瀏覽檢視157),以允許使用者捲動遍及展示所有所安裝擴充應用程式之多個頁面,該等所安裝擴充應用程式經組態以搭配根據本文所描述之一或多項實施例之傳訊應用程式操作。在一實施例中,成像應用程式圖示23可係當經選擇時致使啟動該傳訊應用程式之一外掛程式的一圖示,該外掛程式提供在該傳訊應用程式
之程序內之影像建立,諸如在圖5A、圖5B、及5C中所展示之外掛程式。在一實施例中,當經選擇時,相機應用程式圖示24可致使通訊裝置10A進入一相機模式,在相機模式中,一裝置之一相機可捕獲靜止影像或視訊影像,靜止影像或視訊影像可置於訊息中以傳送影像或視訊。
現在將結合圖2提供一傳訊系統之實例之簡短概觀。一傳訊系統50可包括複數個用戶端裝置,諸如用戶端裝置53及54。根據本文所描述之一或多項實施例,這些用戶端裝置之各者可包括至少一傳訊應用程式,該至少一傳訊應用程式經組態以搭配擴充應用程式操作,並且亦在一傳訊應用程式中傳達至少文字訊息及選用地資源定位符或影像或針對不相容於擴充應用程式架構之裝置的其他內容(例如,如關於圖13A所描述者)。在一典型傳訊系統,可有數百萬個用戶端裝置透過一組傳訊伺服器進行通訊。在一實施例中,複數個傳訊伺服器可經組態以接收來自傳送裝置之經加密訊息,及接著,傳輸彼等經加密訊息至接收裝置。另一組伺服器可經組態以接收非文字內容,諸如影像或其他「附件」,並且回應於來自接收裝置之獲得影像或附件的請求,在下載操作中提供彼等影像或附件至彼等接收裝置。在一實施例中,針對接收器之裝置之各者,個別加密一傳送者之傳出訊息。在一實施例中,可使用一非對稱RSA加密演算法以實行該加密。在一實施例中,可自(由該一或多個傳訊伺服器維持之)一目錄服務擷取接收裝置之各者之公開RSA加密金鑰,目錄服務包括耦合至一或多個傳訊伺服器51之一資料庫,諸如一資料庫52。當一用戶端裝置(諸如用戶端裝置53)試圖傳送一訊息至另一用戶端裝置時,該用戶端裝置(諸如依據一電子郵件地址或一電話號碼或其他識別符)識別至該一或多個傳訊伺服
器51的其他用戶端裝置。該識別符自該用戶端裝置(諸如用戶端裝置53)傳送至一或多個傳訊伺服器51,接著,基於該所供應之識別符在資料庫52中實行一查閱操作,以擷取相對應於該識別符的公開金鑰。接著,該公開金鑰傳回至請求該特定接收裝置之該公開金鑰的該用戶端裝置,及接著,該用戶端裝置可使用該公開金鑰或使用可隨機產生之另一金鑰(例如一對稱金鑰)加密該訊息,並且用該特定接收裝置之公開RSA加密金鑰來加密該其他金鑰。在一實施例中,可依按每訊息基礎來隨機產生該隨機產生金鑰。在一實施例中,所得訊息(一訊息係針對各接收裝置)由經加密訊息文字、經加密訊息金鑰及傳送者之數位簽章所組成,並且接著,針對各接收裝置之此所得訊息被上傳至一或多個傳訊伺服器51,用於遞送至收件者用戶端裝置(諸如用戶端裝置54)。在一實施例中,傳訊系統50可經組態以透過「公眾」網路操作,公眾網路包括公眾WiFi存取點(諸如咖啡店、機場等之WiFi存取點)且亦包括網際網路。在用戶端裝置53及54之各者上的傳訊應用程式亦可經組態以搭配由無線行動電話電訊廠商(諸如Verizon及AT&T)所提供之「私人」網路操作,及該等傳訊應用程式可經組態以順暢地於使用私人網路與公眾網路之間切換,此取決於各網路之可用性且亦取決於在一傳訊工作階段中之用戶端裝置之各者之相容性。在一實施例中,傳訊伺服器51可包括一組推播通知伺服器,推播通知伺服器接收上傳之文字訊息並且「推播」彼等文字訊息至接收裝置。
在一實施例中,一種在一用戶端裝置上之傳訊系統包括一傳訊應用程式及一或多個擴充應用程式,各應用程式操作為分開之程序。在一實施例中,該訊息應用程式及該一或多個擴充應用程式可各係在自己記憶體空間中
操作或執行的分開之沙箱化程序。此外,該傳訊應用程式亦可搭配外掛程式(諸如在圖5A中所展示之影像建立外掛程式)操作,該等外掛程式在相同於該傳訊應用程式的程序及記憶體空間內操作。該傳訊應用程式及各擴充應用程式透過一程序間通訊(諸如iOS及Mac OS X中所提供之XPC架構)彼此通訊。該傳訊應用程式經設計以在一傳送裝置上接收來自該裝置之一使用者之文字及在一訊息文字記錄中顯示該文字,且透過一組一或多個傳訊伺服器傳送該文字至一接收裝置,該接收裝置透過在該接收裝置上之一對應之傳訊應用程式在該接收裝置上之一訊息文字記錄中顯示該所接收文字。該接收裝置及該傳送裝置可各具有相同擴充應用程式之一複本,該等擴充應用程式經組態以取決於該特定擴充應用程式而建立某一類型之內容(或,在一替代實施例中,各裝置可包括由其等使用之內容相容的不同擴充應用程式之一複本)。
圖3A展示一軟體架構之實例,其中一傳訊應用程式及一或多個擴充應用程式一起操作以提供一增強型傳訊系統。如在圖3A中所展示,傳訊系統75包括一傳訊應用程式76及一組外掛程式模組,諸如一撰寫模組77及一資料傳輸模組79,其等經組態以透過一程序間通訊(IPC)81來與一或多個擴充應用程式83通訊。如在圖3A中所展示,在一記憶體空間中,傳訊應用程式以及在傳訊應用程式程序內操作的撰寫模組77及資料傳輸模組79受控於在執行傳訊系統75的通訊裝置上之一核心。當一訊息泡泡顯示或以其他方式呈現透過IPC 81傳遞至該傳訊應用程式的內容時,撰寫模組77撰寫該訊息泡泡之該內容。資料傳輸模組79透過IPC 81傳遞內容及其他資料至擴充應用程式以及透過IPC 81接收來自擴充應用程式的內容及其他資料。在一實施例中,模組77及79兩者可具有
一可擴充外掛程式架構,其允許新增用於產生新內容或需要一新資料傳輸程序之新擴充應用程式的新外掛程式。在此內容脈絡中,外掛程式係在相同於傳訊應用程式之程序內操作的額外軟體。撰寫模組77可使用一範本以建構一訊息泡泡,諸如下文關於圖3C所描述之「MSMessageTemplateLayout」。該核心可包括用於提供IPC 81之一軟體程式庫或軟體架構,以允許介於傳訊系統75與一或多個擴充應用程式83之間之通訊。在一實施例中,IPC架構可包括一系統區,其稱為提供API之一擴充點,以允許兩個不同程序之間之通訊,並且補強可准許之通訊類型方面的原則。在一實施例中,透過IPC進行通訊涉及:由一個程序放置(寫入)內容於一記憶體區域中;及IPC架構允許另一程序自該記憶體區域讀取。在一實施例中,傳訊應用程式76可自動啟動擴充應用程式程序且可管理擴充應用程式程序之存留期,包括彼等程序之終止。在一實施例中,擴充應用程式83之各者在其等自己之位址空間中運行,介於擴充應用程式與傳訊應用程式之間之通訊使用由系統架構居中協調的IPC,並且擴充應用程式與傳訊應用程式不能存取彼此之檔案或記憶體空間。在一實施例中,擴充應用程式之各者可係彼此分開之一沙箱化程序,及傳訊應用程式76亦可係一分開之沙箱化程序,其與擴充應用程式之該沙箱化程序分開。另外,相對於傳訊應用程式,擴充應用程式可具備較少系統權限,使得與傳訊應用程式相比,擴充應用程式在更受限制環境中操作。關於使用程序間通訊用於擴充的進一步資訊可於2014年9月16日申請之美國專利申請案第14/488,122號及公開為美國專利公開案第U.S.2015/0347748號中找到,該等申請案以引用方式併入本文中。
在一實施例中,該傳訊應用程式提供透過該程序間通訊獲自該擴充應用程式之內容之一檢視。該擴充應用程式可在自己的程序建立內容,及接著,依已知該傳訊應用程式可接受之格式(諸如標準影像格式或其他標準格式)提供該內容。此允許該傳訊應用程式接著在一訊息文字記錄內之一或多個訊息泡泡內呈現來自該擴充應用程式之該內容(而無需至少在該接收裝置上之執行該擴充應用程式)。圖3B展示一訊息泡泡17A之實例,訊息泡泡17A含有由一擴充應用程式所建立及自其提供之內容(展示為內容85),訊息泡泡17A亦可包括由該擴充應用程式所建立或所提供之一文字訊息,諸如文字訊息86。在一實施例中,訊息泡泡17A亦可包括一圖示87,其可係建立內容85之擴充應用程式之圖示。
在一實施例中,由一擴充應用程式所建立之物件展示在傳送裝置及接收裝置上的訊息文字記錄中,而無需啟動該擴充應用程式。該等擴充應用程式應提供足夠資訊以建構一訊息泡泡作為該物件之部分。該物件可由經編碼在一資源定位符中之一些不透明資料及提供為一MSMessageTemplateLayout物件之一版面配置規格所組成。MSMessageTemplateLayout係MSMessageLayout之一子類別並且表示指定訊息泡泡版面配置之一方法。
在一實施例中,MSMessageTemplateLayout可具有在圖3C中所展示之下列屬性:
1)image或mediaFileURL:一影像,其提供為一UIImage,或提供為至一影像檔案之一檔案URL,或至一視訊之一檔案URL
2)imageTitle:一字串,其將演現在影像或電影之上
3)imageSubTitle:一字串,其將演現在影像或電影之上,或imageTitle下方
4)caption:一字串,其將演現在影像或電影下方之一字幕列中
5)trailingCaption:一字串,其將演現在對齊影像或電影下方之一字幕列中的右方
6)subCaption:一字串,其將演現在caption下方之一字幕列中
7)trailingSubCaption:一字串,其將演現在對齊trailingCaption下方之一字幕列中的右方
8)擴充圖示:此未提供作為MSMessageTemplateLayout之部分,而是導出自建立MSMessage之擴充的組合識別符(bundleidentifier)。
傳訊應用程式可使用此資訊以建構訊息泡泡,相似於在圖3C中所展示之實例。
MSMessageTemplateLayout經串列化且連同該不透明資料傳送至遠端裝置。在該接收裝置上收到該傳訊應用程式時,將使用該串列化資料建立一MSMessageTemplateLayout,並且使用此來在接收器的訊息文字記錄中繪製訊息泡泡。
在一實施例中,經組態以搭配一傳訊應用程式操作的擴充應用程式不可在該傳訊應用程式外部執行,且因此完全由該傳訊應用程式管理該等擴充應用程式的生命週期。另外,如下文進一步描述,在一實施例中,可由該傳訊應用程式獨佔地控制該等擴充應用程式之下載及安裝。
在一實施例中,各擴充應用程式可獲自一應用程式市集或訊息擴充應用程式的銷售設施(distribution facility)(諸如Apple App Store(商標))且可自該傳訊應用程式內啟動。圖4A展示一種根據一實施例之方法之實例,其中可自傳訊應用程式內瀏覽所安裝擴充應用程式,及可啟動一特定擴充應用程式以允許使用者與一特定擴充應用程式互動。該方法可開始於操作101,在此操作中,該傳訊應用程式顯示其訊息文字記錄及一螢幕鍵盤。圖1B展示此一傳訊應用程式之一使用者介面之實例。接著在操作103,該傳訊應用程式可接收一輸入以在該傳訊應用程式之一檢視內顯示所安裝擴充應用程式之一可瀏覽檢視。舉例而言,一使用者可輕觸圖示22(在圖1B中)以選擇該圖示,其繼而致使在操作105顯示該可瀏覽檢視。在一實施例中,所安裝擴充應用程式之該可瀏覽檢視取代該螢幕鍵盤並且自一擴充登錄檔擷取所安裝擴充應用程式之清單,其致使顯示所安裝擴充應用程式之各者之圖示。圖4B展示操作105之結果之實例,其中一可瀏覽檢視157經顯示且取代該傳訊應用程式之該螢幕鍵盤,如在圖4B中所展示。
參照圖4B,可見,可瀏覽檢視157包括複數個圖示,各圖示表示所安裝擴充應用程式之一者,所安裝擴充應用程式可搭配該傳訊應用程式操作,該傳訊應用程式提供在圖4B中所展示之使用者介面。在圖4B中所展示之該傳訊應用程式之該使用者介面包括展示在執行該傳訊應用程式之通訊裝置150上的觸控式螢幕151之上部分中的一訊息文字記錄153。其他使用者(自通訊裝置150所傳送之訊息的收件者)之一使用者名稱155展示在該傳訊應用程式之該使用者介面之上。一文字鍵入區域155(其展示所暫存或準備好傳送之文字或
其他內容)顯示於訊息文字記錄153與可瀏覽檢視157之間。在一實施例中,可藉由用使用者之手指撥動橫跨觸控式螢幕以致使顯示所安裝擴充應用程式之各種檢視之頁面來瀏覽該可瀏覽檢視(及在一實施例中,亦可展示舉例而言完成一下載程序或完成一安裝程序所需的未安裝之擴充應用程式)。在一實施例中,在該使用者介面底部之一頁面指示項159可展示所安裝擴充應用程式之目前頁面。在一實施例中,可保留圖示之一者以啟動或進入擴充應用程式市集,在圖14B中展示擴充應用程式市集之實例。在另一實施例中,回應於選擇圖示167,該擴充應用程式市集可顯示在可瀏覽檢視157中。在圖4B中所展示之實施例中,圖示167係擴充應用程式市集圖示,其可經選擇以致使呈現該擴充應用程式市集,諸如在圖14B中所展示之擴充應用程式市集。在圖4B中所展示之實施例中,圖示169可經選擇(例如使用者輕觸圖示169)以致使在該可瀏覽檢視中顯示最近所傳送之貼圖或手寫訊息或其他最近所傳送之項目或最近使用之應用程式等。在一實施例中,顯示最近所傳送之項目等可係由在該傳訊應用程式之程序內操作的一外掛程式所提供。其他擴充應用程式包括一預約餐廳訂位應用程式圖示161,其可係可用以接洽一預約餐廳訂位服務之一擴充應用程式,諸如Open Table。一擴充應用程式之另一實例係藉由圖示163所表示,當經選擇時,其啟動一餐廳評論應用程式,其提供餐廳評論且可相似於由舉例而言Yelp所提供之評論。其他擴充應用程式圖示165及171表示其他擴充應用程式,其經安裝且可藉由選擇彼等擴充應用程式圖示之一者予以啟動。
重新參照圖4A,一旦藉由操作105顯示該可瀏覽檢視,使用者可藉由選擇相對應之圖示來選擇擴充應用程式之一者,其繼而致使在操作107
啟動所選擇擴充應用程式。在一實施例中,該傳訊應用程式呼叫一系統服務以啟動所選擇擴充應用程式,並且使用舉例而言在圖3A中展示之架構準備所選擇擴充應用程式以供執行為該傳訊應用程式之一擴充。一旦所選擇擴充應用程式已啟動且執行,透過如本文所描述之IPC架構,該傳訊應用程式(諸如傳訊應用程式76)可裝載由執行中擴充應用程式所提供之內容之檢視。舉例而言,在圖4A中所展示之操作109中,該傳訊應用程式可在該傳訊應用程式之檢視之一部分內顯示由該擴充應用程式所提供之一檢視之內容。現在將描述圖5A至圖5F作為傳訊應用程式如何裝載執行中擴充應用程式之內容之檢視的實例。
圖5A展示裝載一傳訊應用程式之一外掛程式之一檢視的一傳訊應用程式之實例,該外掛程式係藉由選擇圖示207(例如,由一使用者觸碰或輕觸或以其他方式選擇圖示207)而啟動之一影像建立應用程式。在另一實施例中,可藉由選擇在圖4B中所展示之可瀏覽檢視157中之圖示之一者,來啟動展示在圖5A中所展示之使用者介面之底部部分中的外掛程式。雖然在圖5A中所展示之實例可實施為該傳訊應用程式之一外掛程式,但是在另一實施例中,在圖5A中所展示之實例可係一擴充應用程式。在圖5A中所展示之實例中,外掛程式(或擴充應用程式)之檢視已取代該傳訊應用程式之該螢幕鍵盤,但是該傳訊應用程式之該訊息文字記錄仍可檢視且顯示在該使用者介面中,在一實施例中,允許使用者捲動遍及該訊息文字記錄以查看整個文字記錄。在另一實施例中,外掛程式或擴充應用程式之檢視係該螢幕鍵盤上之一覆疊,該螢幕鍵盤之一部分係可檢視。在一實施例中,在通訊裝置200上,在觸控式螢幕202上顯示文字記錄。在一實施例中,該訊息應用程式之該使用者介面亦包括使用者
名稱203,其呈現交談或聊天中的其他使用者之名稱。該訊息應用程式之該使用者介面亦包括文字鍵入區域211,其相似於文字鍵入區域18A及文字鍵入區域155。外掛程式(或擴充應用程式)包括一繪圖畫布215及各種控制件及選項,其可由使用者選擇以繪圖或建立影像。在一實施例中,若選擇塗鴉(sketch)選項217,則繪圖控制件212可允許使用者選擇不同顏色以塗鴉在繪圖畫布上。若選擇輕觸(tap)選項221,則外掛程式(或擴充應用程式)亦可提供輕觸作為一訊息。若選擇心跳(heartbeat)選項219,則外掛程式(或擴充應用程式)亦可提供心跳。在一實施例中,塗鴉、心跳及輕觸可相似於可在Apple Watch上取得之Digital Touch應用程式上之塗鴉、心跳及輕觸。外掛程式(或擴充應用程式)亦包括一展開檢視圖示223,當選擇展開檢視圖示223時,可致使外掛程式(或擴充應用程式)自在圖5A所展示之其目前精簡檢視中切換至一展開檢視,諸如圖7B中所展示之展開檢視。在圖5A中所展示之實例中,使用者剛剛啟動外掛程式影像建立應用程式(或在替代實施例中,一擴充應用程式)並且尚未建立任何內容。此可與在圖5B中所展示之外掛程式(或擴充應用程式)之狀態(其中使用者已藉由使用塗鴉選項217且藉由用舉例而言使用者之手指在繪圖畫布215上繪圖來建立一笑臉塗鴉)形成對比。接著,使用者可致使繪圖被傳送至係訊息收件者之其他使用者(或多個使用者)。因此舉例而言,裝置200之使用者可自在一通訊裝置200上執行之傳訊應用程式內選擇一傳送命令來致使由外掛程式(或擴充應用程式)所建立之內容被傳送至收件者。在圖5C中展示傳送操作之結果,其中笑臉已傳送至Freddy,如由使用者名稱203所指示。訊息泡泡230展示由外掛程式(或擴充應用程式)所建立之笑臉塗鴉;在擴充應用程式
之案例中,此所建立之內容透過IPC架構自擴充應用程式傳達至傳訊應用程式,及接著,呈現在訊息泡泡230內,以展示含有內容傳輸至一或多個收件者的訊息。在一實施例中,一遞送指示項231可指示該訊息已被遞送,及一保留控制件232可提供給使用者,以在其中在一段時期後可自動消除內容的實施例中,允許使用者在該訊息文字記錄中保留該內容。
圖5D、圖5E、及圖5F繪示回應於接收來自在圖5C中所展示之通訊裝置200之內容而可發生在接收器之裝置上的情況。在圖6中所展示之流程圖亦可展示在接收裝置(諸如在圖5D、圖5E、及圖5F中所展示之通訊裝置250)處實行之方法。現在參照圖5D,可見,(由Freddy使用之)通訊裝置250已接收笑臉內容,其展示在訊息泡泡253中。此內容係由在通訊裝置200上執行之擴充應用程式所建立,該擴充應用程式提供笑臉內容至在通訊裝置200上執行之傳訊應用程式,該傳訊應用程式繼而透過一傳訊服務(例如,一組傳訊伺服器,諸如在圖2中所展示之傳訊伺服器51)傳輸該內容至在通訊裝置250上執行之傳訊應用程式,其繼而在訊息泡泡253中呈現該內容。在一實施例中,由於該內容使用已知標準格式(在一實施例中,包括標準影像、音訊及視訊格式),所以可由該傳訊應用程式演現該內容,且因此不需要安裝或執行擴充應用程式以展示由在該傳送裝置上之對應之(遠端)擴充應用程式所建立之內容。因此在如圖5D中所展示之此情況中,即使在通訊裝置250上不可執行或甚至不可安裝對應之擴充應用程式,訊息泡泡253仍可呈現該內容。在圖5D中所展示之傳訊應用程式在其使用者介面中包括一訊息文字記錄201A、一文字鍵入區域211及一螢幕鍵盤255。在一實施例中,即使在接收裝置上之相對應之擴充
應用程式經安裝,接收自一遠端擴充應用程式的內容將不會致使自動啟動在該接收裝置上之該相對應之擴充應用程式。在此實施例中,可由使用者選擇含有由該遠端擴充應用程式所建立之內容的訊息泡泡,來啟動在該接收裝置上之該相對應之擴充應用程式。若使用者未藉由舉例而言觸碰或以其他方式選擇訊息泡泡253來選擇該內容,則將啟動相對應於該遠端擴充應用程式之擴充應用程式(若已安裝在通訊裝置250上)。在圖5E中展示結果,其中擴充應用程式之使用者介面已佔用其中先前顯示螢幕鍵盤255的空間,並且展示在畫布215內笑臉繪圖,允許通訊裝置250之使用者改變或以其他方式修改該塗鴉,並且或許傳回至聊天工作階段或交談中的其他使用者。另一方面,若相對應之擴充應用程式未安裝在通訊裝置上,則在一實施例中,該傳訊應用程式可呈現一通知給該使用者,要求或提議安裝用於所選擇之特定訊息泡泡的應用程式。在圖5F展示此之實例,其中通知259包括兩個使用者可選擇選項,選項之一者將安裝訊息泡泡所需之應用程式。在另一實施例中,可在傳訊應用程式之檢視內顯示來自一擴充應用程式市集之一頁資訊的一工作表。
在一實施例中,自遠端裝置傳輸至通訊裝置250之訊息含有後設資料,該後設資料指定用以建立內容的遠端擴充應用程式。在一實施例中,此後設資料可係一應用程式識別符(諸如由可自其下載及安裝擴充應用程式的一應用程式市集或一擴充應用程式市集所提供之一識別符),或可係可與由應用程式市集所使用之識別符相關聯的一不同識別符。在一實施例中,通知259可由選擇訊息泡泡253所導致,而在另一實施例中,若當由通訊裝置250接收訊息
泡泡253之內容時未安裝該內容之後設資料中的應用程式識別符,則會自動導致通知。
現在將參照圖6結合圖5D、圖5E、及圖5F來解說在一實施例中之一種方法,其中由一遠端擴充應用程式(諸如結合在通訊裝置200上之傳訊應用程式執行的遠端擴充應用程式)建立一接收裝置程序內容。在操作301中,一通訊裝置可接收含有由一擴充應用程式(諸如結合在一傳送裝置上之一傳訊應用程式操作的一遠端擴充應用程式)所建立之內容的一訊息。此外,該通訊裝置亦可接收後設資料,該後設資料可包括一訊息泡泡識別符、工作階段識別符及一擴充應用程式識別符以及潛在的其他資料,諸如一選用之資源定位符及可與該選用之資源定位符相關聯的其他資料(狀態資訊),且該資源定位符亦可包括經編碼在該資源定位符中之狀態資訊。將結合圖8、圖9A及圖9B提供關於使用資源定位符及與該等資源定位符相關聯之資料的進一步資訊。接著在操作303中,在操作301中已接收訊息的通訊裝置處理該內容並且在藉由訊息泡泡識別符所識別之一訊息泡泡中顯示該內容,並且在訊息文字記錄內顯示該訊息泡泡。在一實施例中,處理該內容可包括解密該內容及演現該內容以供呈現及顯示在該訊息泡泡內。在一實施例中,由該傳訊應用程式顯示該內容而無需來自該擴充應用程式之協助;換言之,在一實施例中,該擴充應用程式可未經安裝,或若已安裝,則未在該通訊裝置上執行,且因此顯示該螢幕鍵盤。接著在操作305中,該通訊裝置接收顯示由該遠端擴充應用程式所建立之內容的該訊息泡泡之一選擇。在一實施例中,參照圖5D,使用者可在一觸控式螢幕上輕觸在該訊息泡泡上或以其他方式選擇(例如使用者使用一手寫筆在一觸控式
螢幕上選擇或搭配一桌上型電腦使用一滑鼠等)訊息泡泡253以致使在操作305中之該選擇。回應於操作305,該通訊裝置(諸如通訊裝置250)在操作307中判定是否已安裝該擴充應用程式。在一實施例中,此可藉由檢查由該傳訊應用程式維持之所安裝擴充應用程式之一清單或註冊予以實行。在一實施例中,在操作301中接收的後設資料包括應用程式識別符,及在操作307中,該傳訊應用程式搜尋該清單以判定是否識別符存在於該清單中。若識別符未存在於該清單中,則該傳訊應用程式判定該擴充應用程式未經安裝,藉此致使該通訊裝置實行操作309,在此操作中,在圖5F中所展示之通知259可顯示給使用者,以提議下載及安裝由在操作301作為該後設資料之部分所接收的應用程式識別符所指定的應用程式。若使用者選擇選項「是」,則實行操作311,在此操作中,該傳訊應用程式致使該通訊裝置存取擴充應用程式市集(諸如具有在圖14B中所展示之一使用者介面的擴充應用程式市集)以透過一下載程序擷取該擴充應用程式之一複本並且致使安裝該擴充應用程式。在一實施例中,可完全在背景中實行操作311,使得在下載及安裝程序期間,該傳訊應用程式保持為前景應用程式。圖9C展示在下載及安裝程序期間維持在一訊息文字記錄中之一訊息泡泡471之實例,其中該訊息泡泡包括指示下載及安裝操作進度的一進度條473,同時該傳訊應用程式保持為在該傳訊應用程式之該訊息文字記錄中顯示訊息泡泡471的前景應用程式。在操作311之另一實施例中,展示來自一擴充應用程式市集之一頁資訊的一工作表可顯示在該傳訊應用程式上(其中選用地,仍然顯示該傳訊應用程式之一部分),並且該工作表可展示一「購買」或安裝或下載按鈕,若選擇該按鈕,則可致使下載及安裝擴充應用程式,並且可藉由選擇一解
除命令或藉由選擇購買或安裝或下載來解除該工作表(自顯示移除)。在下載及安裝該擴充應用程式後,處理可進行至在圖6中之操作313,在此操作中,啟動該擴充應用程式,並且由該傳訊應用程式(經由IPC)將該遠端擴充應用程式所使用或所建立之內容及其他資料傳遞至該擴充應用程式,及在一實施例中,在一精簡檢視或展開檢視中顯示該擴充應用程式,且在該檢視內顯示由該遠端擴充應用程式所建立之內容。如在圖6中所展示,若操作307判定該擴充應用程式經安裝,則操作307後續亦接著操作313。圖5E展示操作313之結果之一實例。
在一實施例中,一傳訊應用程式可取決於擴充應用程式之類型,依不同方式啟動不同類型之擴充應用程式。舉例而言,可回應於收到含有來自具有某一預定類型之一擴充應用程式之內容的一訊息泡泡,而自動啟動一種類型之擴充應用程式。在一實施例中,可回應於在一可瀏覽檢視(諸如可瀏覽檢視571)選擇含有來自具有一不同類型之其他擴充應用程式之內容的一訊息泡泡或藉由選擇表示該擴充應用程式之一圖示,而僅啟動該擴充應用程式。希望允許回應於接收到顯示在該訊息文字記錄內之內容而自動啟動具有某一類型的某些擴充應用程式,同時不自動啟動其他類型之擴充應用程式。在另一替代實施例中,可准許一或多個擴充應用程式在背景中執行及可允許更新呈現在其各自訊息泡泡中的其各自使用者介面,及當使用者選擇這些訊息泡泡之一者時,該擴充應用程式可出現在前景中(例如,顯示該擴充應用程式之UI而取代螢幕鍵盤)。
在一替代實施例中,該後設資料可包括一格式或擴充識別符,諸如一影像格式之一識別符,其可用以判定可在該接收裝置上處理該影像格式的可用擴充應用程式。
圖7A及圖7B繪示本文所描述之實施例之另一態樣,其中擴充應用程式可藉由傳送通訊至傳訊應用程式以致使變更而致使一檢視被變更。在一實施例中,可於擴充應用程式與傳訊應用程式之間提供一應用程式設計介面(API),以允許該擴充應用程式呼叫該API以變更其在裝載該擴充應用程式之檢視的該傳訊應用程式內之檢視。在一實施例中,一擴充應用程式可具有至少兩個不同檢視,其可包括一精簡檢視及一展開檢視。在一實施例中,該精簡檢視可係取代該傳訊應用程式之該螢幕鍵盤的一檢視,同時該訊息文字記錄仍保持顯示在該傳訊應用程式之該使用者介面中。在展開檢視中,不再顯示該訊息文字記錄且不顯示該螢幕鍵盤,但是顯示該傳訊應用程式之該螢幕鍵盤之某些其他組件,諸如文字鍵入區域211及一相機啟用圖示235。圖7B展示一展開檢視之實例,其中繪圖畫布215A佔用觸控式螢幕之大多數空間。如在圖7B中所展示,可由使用者選擇精簡檢視圖示223A以致使系統以自在圖7B中所展示之該展開檢視變更回至該精簡檢視,諸如在圖5A中所展示之檢視。
在圖7A中所展示之方法係展示如何可變更檢視之一實施例,及將理解,在替代實施例中,操作序列可依不同順序予以實行且有可省略的步驟或中介步驟或額外步驟。
在圖7A之操作351中,由傳訊應用程式用一特定檢視或樣式來顯示擴充應用程式。在操作353中,該擴充應用程式可呼叫該傳訊應用程式以
取得該擴充應用程式之目前呈現的檢視/樣式。在操作357中,該傳訊應用程式可提供對來自操作353之呼叫的一傳回值,且該傳回值可指示該擴充應用程式之該目前呈現的檢視/樣式。回應於在操作357中所接收之目前呈現,該擴充應用程式可藉由以下方式來請求變更該呈現的檢視/樣式:提供一呼叫至該傳訊應用程式及在操作361中接收該呼叫,來致使該變更發生。在一實施例中,該傳訊應用程式可最初用對該檢視正在變更中或將被變更之一認可來回應於此呼叫。回應於該呼叫,在操作363中,該傳訊應用程式變更呈現之樣式/檢視並且在所請求之檢視呈現的檢視/樣式內顯示該擴充應用程式,及在操作365中,該傳訊應用程式向該擴充應用程式告知檢視變更已完成。重新參照圖7B,若使用者選擇精簡檢視圖示223A,此可致使自該擴充應用程式呼叫該傳訊應用程式,以變更該擴充應用程式在該傳訊應用程式之該使用者介面內之檢視。
現在將相對於本文所提呈之實施例之另一態樣描述圖8、圖9A、圖9B、及圖9C。在此實施例之一態樣中,在另一裝置上之一擴充應用程式及一對應之擴充應用程式可參與一通訊工作階段並且在其等通訊工作階段中來回交換資訊,及所有皆發生在由介接於兩個擴充應用程式之間之兩個傳訊應用程式所維持的一訊息文字記錄之內容脈絡內,如在圖8中所展示。在一實施例中,用於一傳訊應用程式之外掛程式亦可依相似方式操作及透過在一工作階段中的兩個傳訊應用程式在外掛程式之間之交換資訊。在圖8中所展示之傳訊系統400包括至少兩個用戶端裝置(用戶端裝置401及用戶端裝置405)且亦包括一組一或多個傳訊伺服器403。用戶端裝置401及405可相似於在圖2中之用戶端裝置53及54,及該組一或多個傳訊伺服器403可相似於在圖2中所展示之該組
傳訊伺服器51。各用戶端裝置可包括一特定擴充應用程式(諸如,舉例而言,用於預約餐廳訂位之一擴充應用程式)之一所安裝複本,及可使用在各裝置上之擴充應用程式來建立內容(例如文字、影像、音訊、視訊等),並且針對在該特定用戶端裝置上該訊息文字記錄中之一特定訊息(其可稱為一訊息泡泡),透過一程序間通訊架構傳遞此內容至在該裝置上之該傳訊應用程式。該訊息應用程式接收該內容(及選用地來自該擴充應用程式的其他資料,包括舉例而言該擴充應用程式之一識別符、一資源定位符及選用地後設資料以供由在其他裝置上之一對應之或遠端擴充應用程式使用等)及顯示可顯示之內容(諸如在訊息文字記錄中之訊息泡泡中由擴充應用程式(其係一預約餐廳訂位應用程式,諸如「Open Table」)所提供之一餐廳之一影像)。實際上,該傳訊應用程式在該傳訊應用程式內裝載一檢視,且該檢視之該內容係由該擴充應用程式所提供。在一實施例中,該資源定位符及後設資料對該傳訊應用程式係不透明的(例如無法被該傳訊應用程式辨識),但是可由在各裝置上之擴充應用程式使用以維持該等擴充應用程式之間之工作階段的狀態資訊,及在各裝置上之該等傳訊應用程式藉由於該等擴充應用程式之間之傳遞該資源定位符及後設資料而作為該等擴充應用程式之間之一通訊機制。在一實施例中,關於該工作階段之狀態資訊可經編碼在該資源定位符中或可提供在該後設資料中或兩者皆可。在一實施例中,自在各裝置上之一工作階段所建立之內容顯示在訊息文字記錄中之相同單一訊息泡泡(藉由可由該傳訊應用程式維持之一工作階段識別符所識別)內,且每次內容變更((基於來自任一裝置之變更)時,所更新之內容繼續顯示在訊息文字記錄中之一單一訊息泡泡內,及顯示在該工作階段中之內容的
任何先前訊息泡泡可轉換成階層連結,且這些先前訊息泡泡將亦包括相同於新的經更新之訊息泡泡的工作階段識別符。現在將描述在圖8中所展示之組件之操作及功能,同時參照圖9A,其展示在一實施例中之一種操作傳訊系統400之方法。
在圖9A之操作451中,一擴充應用程式(諸如擴充應用程式407)可建立內容及產生一資源定位符及資料(或可修改現有的內容、資源定位符或資料)。該擴充應用程式可相似於擴充應用程式83且在一實施例中在一程序中執行,而該傳訊應用程式(其可相似於傳訊應用程式76)在另一程序中執行,及該等程序之間之通訊透過一IPC(諸如IPC 81)而發生,IPC可係用於提供兩個相異程序之間之程序間通訊的軟體架構或程式庫。擴充應用程式407可舉例而言係一預約餐廳訂位應用程式,其透過可提供一狀態資訊以供搭配該資源定位符使用(或該狀態資訊可經編碼於該資源定位符中)的一網站來建立一預約訂位。在一實施例中,具備該資源定位符之資料可係自該網站提供的一狀態資訊,及該狀態資訊可包括關於特定餐廳的資訊以及該預約訂位之時間與該預約訂位中的人數。擴充應用程式407可在一精簡檢視或展開檢視中呈現使用者介面以供透過該網站進行該預約餐廳訂位,同時顯示該傳訊應用程式之其餘者,包括舉例而言該訊息文字記錄。因此,擴充應用程式407之使用者可在該訊息文字記錄中查看交談之上下文,同時與該擴充應用程式互動及(透過該擴充應用程式)與該網站互動以建立一預約餐廳訂位。在一實施例中,該使用者可能夠(在該預約餐廳訂位應用程式內)瀏覽各種餐廳及搜尋餐廳。在擴充應用程式407之使用者已選擇一餐廳且鍵入一預約訂位後,擴充應用程式407可
透過IPC 415傳遞在圖8中所展示之內容且亦傳遞資源定位符及資料417給在裝置401上之該傳訊應用程式。此在圖9A中展示為操作453。在操作455中,傳訊應用程式409使接收自擴充應用程式407之內容與訊息泡泡相關聯,並且在傳訊應用程式409之使用者介面中之訊息文字記錄中之泡泡中顯示內容。接著在操作457中,傳訊應用程式409回應於接收自使用者的一傳送命令而透過該一或多個傳訊伺服器403(其傳遞通訊419至第二裝置405(亦稱為用戶端裝置405))將接收自擴充應用程式407的一訊息(若有的話)與內容、及識別應用程式407之一應用程式識別符(與選用地應用程式407之一圖示)、及資源定位符與資料(若有的話)與一工作階段識別符傳送至該第二裝置。在一實施例中,操作453及455可回應於該傳訊應用程式接收該傳送命令之選擇而作為操作457之部分發生。應用程式407之圖示可顯示在該接收裝置上之訊息泡泡上,即使未安裝對應之擴充應用程式;參看舉例而言在圖3B中之圖示87。在圖9A中所展示之操作459中,在用戶端裝置405上之傳訊應用程式411接收來自一或多個傳訊伺服器403的內容並且在由傳訊應用程式411之使用者介面所提供在訊息文字記錄內之所識別訊息泡泡421中顯示該內容。圖9B展示在一實施例中具有由一預約餐廳訂位擴充應用程式所建立之內容的此一訊息泡泡471之更詳細實例。在圖9B中所展示之實例,該內容包括餐廳名稱、預約訂位時間及預約訂位人數。在一實施例中,可由該傳訊應用程式顯示此內容而無需啟動擴充應用程式413。在一實施例中,未啟動擴充應用程式413直到用戶端裝置405之使用者選擇訊息泡泡421,藉此向該用戶端裝置指示用戶端裝置405之使用者意圖與在訊息泡泡421中的內容互動。在一替代實施例中,可在由傳訊應用程式411收到該內容時
啟動擴充應用程式413,但是擴充應用程式413保持為在背景中且準備好當用戶端裝置405之使用者鍵入一命令以致使該擴充應用程式出現時執行。在操作461中,回應於選擇訊息泡泡421而啟動(若尚未啟動)由通訊419中提供之應用程式識別符所識別的擴充應用程式413,及傳訊應用程式411透過IPC 423傳遞與訊息泡泡421相關聯之內容及資源定位符及資料425至傳訊應用程式413。在一實施例中,擴充應用程式413係對應之擴充應用程式(其係與擴充應用程式407相同之擴充應用程式),而在另一實施例中,擴充應用程式413可僅係相容的,此係因為其等可處理相同類型之內容。
此時,擴充應用程式413可接收用戶端裝置405之使用者的使用者輸入且可修改內容、資源定位符或資料之一或多者。舉例而言,用戶端裝置405之使用者可致使擴充應用程式413存取一或多個網站以藉由修改時間、人數,特定餐廳等來修改預約餐廳訂位。在一實施例中,擴充應用程式413及擴充應用程式407亦可藉由下列來與網頁伺服器直接互動(但是個別地且獨立地):傳送資源定位符及資料至網頁伺服器及接收來自網頁伺服器之回應,其可包括經修改資料或經修改資源定位符,或新資料及/或新資源定位符等。在一實施例中,網頁伺服器可儲存資料以供在工作階段期間使用,並且此所儲存之資料可包括一些或所有狀態資訊的資訊,在工作階段中亦可藉由該兩個擴充應用程式維持資訊。再次,若呈現擴充應用程式413以供顯示在一精簡檢視中,則裝置405之使用者可與擴充應用程式413互動以進行預約餐廳訂位,同時在傳訊應用程式411之訊息文字記錄中展示聊天或傳訊工作階段的上下文及交談。用戶端裝置405之使用者可捲動遍及該訊息文字記錄,同時繼續查看且與擴充
應用程式413互動。因此,在操作463中,擴充應用程式413可接收使用者輸入且可修改內容、資源定位符或資料之至少一者,及接著在操作465中,可傳遞資源定位符及資料427(其可經修改或新的)至傳訊應用程式411。繼而,在操作467中,傳訊應用程式411可將內容(其可經修改)及應用程式識別符及資源定位符(其可經修改)及資料(其可經修改)及泡泡ID傳回至用戶端裝置401。如在操作469中所展示,在本文提供之實例中,隨著兩個使用者進行約餐廳訂位,此程序可隨時間重複。
將理解,許多不同類型之擴充應用程式可提供介於用戶端裝置401與405之間之使用者的一共同作業環境,以交換資訊及一起共同作業,且將理解,預約餐廳訂位係一種此類類型。因此,將理解,關於圖8及圖9A描述之預約餐廳訂位實例僅係可在一傳訊應用程式之使用者介面的內容脈絡中提供一共同作業環境的一種此類類型之擴充應用程式之實例。可提供一相似共同作業環境的其他類型之擴充應用程式之實例包括舉例而言:貼圖擴充應用程式;成像應用程式;繪圖應用程式;內容建立應用程式;遊戲;音樂建立應用程式;內容觀賞(content consumption)應用程式;投票應用程式;地圖應用程式;等。
在一或多項實施例中,在圖8中所展示及關於圖9A所描述之共同作業環境圖9A可利用階層連結,及階層連結之各者可藉由一工作階段識別符予以識別。一階層連結表示一經轉換之訊息泡泡且藉由一工作階段識別符予以識別,該工作階段識別符與在工作階段中之其他訊息泡泡共用。在一實施例中,經識別具有與一新訊息泡泡相同之工作階段識別符的各先前訊息泡泡可轉換成一階層連結,其出現方式可不同於在訊息文字記錄中展示的原始內容。在
一實施例中,隨著工作階段中的各新訊息泡泡抵達或新增至該訊息文字記錄,經識別具有相同工作階段識別符之先前訊息泡泡可轉換成一階層連結,並且此展示在圖9D、圖9E、圖9F、圖9G、及圖9H中所展示之訊息文字記錄中。圖9D及圖9H展示在Joe的裝置上之一訊息文字記錄510,及圖9E、圖9F、及圖9G展示在Lester的裝置上之一訊息文字記錄17。訊息文字記錄510展示Lester之使用者名稱511,及訊息文字記錄517展示Joe之使用者名稱518。在圖9D、圖9E、圖9F、圖9G、及圖9H所展示之實例中,Lester及Joe參與一文字傳訊交談且各使用一擴充應用程式,諸如一影像建立應用程式或其他擴充應用程式。舉例而言,Lester可使用在圖8中所展示之擴充應用程式407及Joe可使用在圖8中所展示之擴充應用程式413。Lester的裝置可使用傳訊應用程式409,而Joe的裝置可使用傳訊應用程式411。重新參照圖9D,可見,訊息文字記錄510包括指示在訊息文字記錄510內之交談內容之訊息泡泡512及訊息泡泡513。此外,Joe已使用擴充應用程式413建立附加至訊息泡泡514的內容515。舉例而言,Joe可已使用擴充應用程式413鍵入文字作為一文字訊息且亦建立內容,及接著,致使在訊息泡泡514內展示該文字且內容515(在一實施例中,其與訊息泡泡514相關聯或係訊息泡泡514之部分)被傳送至Lester的裝置。訊息文字記錄510之右側展示由Joe所傳送之訊息,而訊息文字記錄510之左側展示接收自之Lester訊息。現在參照圖9E,可見,訊息泡泡513現在在Lester的裝置上之訊息文字記錄517之右側上,而訊息泡泡514及內容515係在訊息文字記錄517之左側。因此,Lester的裝置已接收在內訊息泡泡514之文字訊息且亦已接收由在Joe的裝置上之擴充應用程式產生之內容515。接著,Lester可輕觸在內容515上以致使啟動在Lester的裝
置上之相對應之或對應之擴充應用程式。內容515與針對在Lester的裝置上之擴充應用程式維持的一工作階段識別符相關聯。舉例而言,在一實施例中,在程序中之此時,由於使用者選擇可顯示在一訊息泡泡內的內容515,可在Lester的裝置上實行在圖9A中所展示之操作461。接著,Lester可使用在Lester的裝置上之擴充應用程式以建立經修改之內容或新內容且將經修改之內容或新內容傳回給Joe。在圖9F中,可見,Lester已建立經修改或新內容521,其展示在一暫存區519內,暫存區519展示準備好傳送且將回應於由一使用者選擇一傳送命令(諸如圖9F中所展示之傳送按鈕523)而被傳送的文字及其他內容。當Lester選擇在暫存區519中展示之傳送命令連同內容時,此致使文字訊息520及新的或經修改內容521被傳送至Joe,並且此在圖9G中可見,圖中展示文字訊息520之訊息泡泡520A在訊息文字記錄517之右側上,訊息文字記錄517亦展示內容521(在一實施例中,內容521與或訊息泡泡520A之部分相關聯),內容521係由Lester使用Lester的裝置上之擴充應用程式407在予以修改或建立為新內容。
自圖9G可見,內容515現在已轉換成一階層連結515A。在一實施例中,可由傳訊應用程式或替代地由擴充應用程式實行此轉換。在一實施例中,擴充應用程式可提供出現在階層連結515A內的文字,及傳訊應用程式將使用工作階段識別符以識別將轉換成一階層連結的一或多個訊息泡泡,及在一實施例中,此將致使轉換內容515成階層連結515A且顯示該階層連結在相關聯之訊息泡泡514旁,而無需轉換在訊息泡泡514中之一文字訊息成一階層連結。因此,圖9G展示在一傳送裝置上如何可使用與由一擴充應用程式所建立之先前訊息泡泡或內容相關聯之一工作階段識別符以轉換該(該等)先前訊息泡泡成一
階層連結。圖9H展示在一實施例中在接收裝置上如何轉換顯示。在圖9H中所展示之圖式中,訊息泡泡520A連同來自Lester的裝置之擴充應用程式的新的或經修改內容403展示在訊息文字記錄510之左側上。在Joe的裝置上之內容515已轉換成在訊息文字記錄之右側上之一階層連結515A且相鄰於訊息泡泡514予以顯示,當最初傳送內容515時,訊息泡泡514附有內容515。
在操作459中,若接收裝置(諸如用戶端裝置405)能夠安裝及使用擴充應用程式(由通訊419中提供之應用程式識別符所識別),但是該擴充應用程式未安裝在該接收裝置上,則該接收裝置可在該傳訊應用程式之該使用者介面內提議下載及安裝該擴充應用程式(再次,在該接收裝置上,由通訊419中之應用程式識別符所指定)。圖9C展示其中可在用戶端裝置405上在一訊息泡泡471中顯示來自擴充應用程式407的內容、及用戶端裝置405係在下載及安裝由通訊419中之應用程式識別符所識別之擴充應用程式之程序中的實例。在圖9C所展示之實例中,在訊息泡泡471內顯示內容,同時正在安裝擴充應用程式413。在一實施例中,在安裝程序期間,可在訊息泡泡471內展示一進度條473(或替代地一進度圈)。在一實施例中,下載及安裝程序可在背景中實行,同時傳訊應用程式保持為前景應用程式。若該接收裝置不能安裝或使用該擴充應用程式,則在一實施例中,資源定位符及後設資料可傳遞至在該接收裝置上之一網頁瀏覽器,及該網頁瀏覽器可變成前景應用程式且允許使用者與由該資源定位符所參照之網頁互動。
在一些實施例中,希望提供各使用者之一識別符至在一用戶端裝置上執行之各擴充應用程式,尤其在一共同作業環境中,在共同作業環境
中,兩個或更多個使用者透過傳訊應用程式及擴充應用程式互動。圖10展示一種用以提供各擴充應用程式之一識別符而不會造成使用者隱私權喪失之方法之實例。可由在各用戶端裝置上之各傳訊應用程式實行在圖10中所展示之方法。在一實施例中,可回應於自一擴充應用程式呼叫一應用程式設計介面(API)而實行該方法,其可允許該擴充應用程式請求本端使用者之一識別符。在一實施例中,該識別符可係本端使用者之電子郵件地址或電話號碼或由傳訊系統使用之其他識別符。在一實施例中,提供至該擴充應用程式之該識別符係由在圖10中所展示之方法中所建立之一模糊識別符。在操作501中,該傳訊應用程式可回應於來自該擴充應用程式之一呼叫而產生用於該特定擴充應用程式之一salt。在一實施例中,該salt可係與該特定擴充應用程式相關聯之一隨機數字。接著在操作503中,該傳訊應用程式可產生一使用者或裝置識別符與該salt之一組合之一雜湊(諸如一SHA-1雜湊)。舉例而言,該使用者識別符可係使用者之電話號碼或電子郵件地址,且該電話號碼或電子郵件地址與該salt組合,及接著在操作503中,建立該組合之該雜湊。接著在操作505中,透過IPC提供該雜湊至該擴充應用程式,且可使用該雜湊值連同該資源定位符作為資料,其接著可被傳送至其他擴充應用程式,以識別已變更或已建立一內容的使用者。在另一實施例中,該傳訊應用程式可藉由維持該識別符及針對各擴充應用程式的一隨機產生唯一識別符的一映射來模糊該識別符。換言之,針對一給定擴充應用程式,該傳訊應用程式可產生該擴充應用程式的一隨機(且唯一)識別符並且使該隨機識別符與使用者之識別符(例如本端使用者之電子郵件地址或電話號碼或由該傳訊系統使用的其他識別符)相關聯(例如,映射)。該給定擴充應用程式的
此隨機識別符可提供至該擴充應用程式,但是該識別符未提供至該擴充應用程式。另一擴充應用程式將接收一不同的隨機產生之識別符。接著,此擴充應用程式特定之識別符可提供至在另一裝置上之一對應之擴充應用程式,使得該兩個擴充應用程式可追蹤哪些使用者在一工作階段之內容脈絡或其他共同作業環境中實行哪些動作。
在一實施例中,本文所描述之傳訊系統可提供訊息之已接收確認(confirmation of receipt)至一或多個擴充應用程式,並且此可實用於其中擴充應用程式必須確定該遠端擴充應用程式具有與本端擴充應用程式相同的已知狀態的某些情況中。圖11展示一種用於提供已接收確認之方法之實例。在操作551中,傳訊應用程式接收來自一使用者之「傳送」命令,作出回應,本端擴充應用程式提供該內容至該傳訊應用程式。繼而,在操作553中,該傳訊應用程式透過一或多個傳訊伺服器將訊息及訊息泡泡識別符及內容及資源定位符(若有的話)傳送至一接收裝置,該接收裝置亦包括一訊息應用程式。在某時刻,在操作555中,在本端裝置上之傳訊應用程式接收訊息及內容及選用之資源定位符的一已接收確認,及接著,在操作557中,可透過IPC傳遞該已接收確認至本端擴充應用程式,使得當本端擴充應用程式提供其內容以供傳輸至遠端擴充應用程式時,本端擴充應用程式已知遠端擴充應用程式具有該相同已知狀態。
圖12展示本文所描述之實施例之另一態樣,且該態樣係關於在一訊息文字記錄內呈現多個訊息泡泡,其中不同訊息泡泡具有由不同擴充應用程式所建立之內容,且擴充應用程式之少一者可在執行中(且其內容顯示在一
精簡檢視中),同時亦顯示傳訊應用程式之訊息文字記錄之使用者介面。圖12展示此一態樣之實例。在此實施例中,通訊裝置600包括一觸控式螢幕601,觸控式螢幕601顯示包括兩個訊息泡泡605及607之一訊息文字記錄603。此外,傳訊應用程式呈現一擴充應用程式之一精簡檢視609,在此情況中,該擴充應用程式係用於預約餐廳訂位之一擴充應用程式。在圖12中所展示之實例中,已使用用於預約餐廳訂位之該擴充應用程式來傳送展示預約餐廳訂位內容之一訊息,其描繪為訊息泡泡607。此可由於接收來自另一使用者之一訊息而已發生,該另一使用者使用另一通訊裝置提供來自另一擴充應用程式之一餐廳評論內容。在圖12中所展示之實例中,訊息泡泡605展示由用於提供餐廳評論之一遠端擴充應用程式所建立之內容,該用於提供餐廳評論之遠端擴充應用程式不同於用於預約餐廳訂位之擴充應用程式。在一實施例中,擴充應用程式兩者皆可在通訊裝置兩者上執行,其係傳訊工作階段或聊天之部分。
本文所描述之實施例之另一態樣係關於回溯相容性,且該態樣展示在圖13A及圖13B中。某些較舊裝置會不相容於本文所描述之擴充應用程式架構或不可使用此架構或甚至不係智慧型手機。在一實施例中,正在傳送訊息的一用戶端裝置可能夠自動或基於判定接收裝置不相容於擴充應用程式而提供替代內容。在圖13A中所展示一種用於提供回溯相容性之方法。在操作651中,在一傳送裝置上之一擴充應用程式在該傳送裝置上(第一裝置)建立內容,以供透過一傳訊應用程式及一傳訊服務遞送至一第二裝置。此可相似於在圖9A中之操作451。接著,在操作653中,回應於該傳訊應用程式接收使用者之「傳送」選擇,可透過一程序間通訊將在操作651中建立之內容傳遞至該傳訊應用
程式。接著在操作655中,該傳訊應用程式可在該第一裝置上顯示該內容且亦判定該第二裝置不相容於擴充應用程式。在一實施例中,此可由於接收來自一或多個傳訊伺服器(諸如在圖2中所展示之一或多個傳訊伺服器51,傳訊伺服器可維持關於各裝置之狀態的資訊,諸如裝置之作業系統版本或裝置之類型等)的關於該接收裝置(第二裝置)之資訊而予以判定。由於判定該第二裝置不相容於擴充應用程式,在操作657中,該傳訊應用程式可傳送替代內容至該第二裝置,且圖13B提供此替代內容之實例。
在圖13B中所展示之通訊裝置675可係舉例而言使用不相容於本文所描述之擴充應用程式的較舊作業系統之較舊智慧型手機。然而,通訊裝置675包括一觸控式螢幕679及一文字鍵入區域683及一螢幕鍵盤685,其提供一傳訊應用程式之功能性,該傳訊應用程式亦顯示包括一訊息泡泡687之一訊息文字記錄681。訊息泡泡687含有由在一遠端裝置上之一傳送訊息應用程式所提供之替代內容。在此情況中,該內容包括一影像689及一資源定位符691,使用者可選擇資源定位符691以致使顯示資源定位符691所參照之一網頁。換言之,使用者可選擇資源定位符691以在通訊裝置675叫用一網頁瀏覽器,以允許通訊裝置675之使用者透過一網頁瀏覽器來與該網頁互動,在某些例子中,其效應可相同於一擴充應用程式與該網站互動。
根據本文所描述之一或多項實施例,本文所描述之實施例之另一態樣係關於一種服務,諸如可提供複數個不同擴充應用程式之一應用程式市集,以供在一傳訊應用程式內使用。該服務或應用程式市集可呈現複數個不同擴充應用程式及傳訊應用程式外掛程式之可瀏覽檢視,並且提供關於彼等各種
擴充應用程式之資訊,及提供下載彼等擴充應用程式至一用戶端裝置,以允許該用戶端裝置安裝一或多個擴充應用程式。圖14A展示一種用於使用此一服務或應用程式市集之方法之實例,及圖14B展示用於一傳訊擴充應用程式市集之一使用者介面之實例。在一實施例中,可自在一用戶端裝置上之傳訊應用程式之使用者介面內的所安裝擴充應用程式之一可瀏覽檢視叫用在圖14B中所展示之應用程式市集。舉例而言,選擇在圖4B中所展示之圖示167可致使呈現在圖14B中所展示之傳訊擴充應用程式市集。接著,使用者可瀏覽一或多個傳訊擴充應用程式集合且選擇可係免費或可購買的一或多個擴充應用程式。在圖14B中所展示之實例,傳訊擴充應用程式市集725可包括一導覽列729及一或多個傳訊擴充應用程式之一可瀏覽檢視,諸如顯示在觸控式螢幕727上之應用程式726、728、及731。在一實施例中,使用者可藉由用使用者之手指撥動橫跨觸控式螢幕或藉由使用一導覽列729來瀏覽該等應用程式。接著,使用者可選擇下載及安裝擴充應用程式之一或多者,及結果,在使用者之用戶端裝置上之傳訊應用程式可新增表示新安裝之擴充應用程式的一圖示至所安裝擴充應用程式之可瀏覽檢視,諸如在圖4B中所展示之可瀏覽檢視157。此外,該傳訊應用程式可新增所安裝擴充應用程式連同由該應用程式市集所提供之應用程式之識別符(「應用程式識別符」)至所安裝擴充應用程式之一清單中。雖然使用者使用在圖14B中所展示之應用程式市集係一種安裝擴充應用程式之方式,但是在圖14A中所展示另一方式,其中由於使用者與在一傳訊應用程式之訊息文字記錄中之一訊息互動而使安裝程序開始。
現參照圖14A,在操作701中,一傳訊應用程式可接收由一遠端裝置(例如一第一裝置)上之一擴充應用程式所創建的內容(及一可選的資源定位符與資料),且亦可接收該遠端裝置上之該擴充應用程式的一應用程式識別符。在一實施例中,應用程式識別符在擴充應用程式經安裝於第一裝置上時可係應用程式市集所提供的相同識別符,或者可係與應用程式商店之識別符相關聯的一不同識別符。接著在操作703中,第二裝置上的傳訊應用程式可展示一訊息泡泡中的內容,並可保留資源定位符與資料(若提供)。此時,此實施例中之傳訊應用程式並未試圖啟動一擴充應用程式,該擴充應用程式在此時間點事實上並未安裝於第二裝置上。之後在操作705中,傳訊應用程式接收含有來自第一裝置之由擴充應用程式所提供之內容的訊息泡泡之一選擇(例如一輕觸),且傳訊應用程式判定擴充應用程式(如藉由所接收之應用程式識別符所識別者)並未安裝於第二裝置上。此時,如圖14A之操作707所示,傳訊應用程式提議在第二裝置上下載及安裝擴充應用程式,且使用者可選擇安裝該擴充應用程式(其係藉由在操作701中所接收的應用程式識別符來識別)。在一些情況下,使用者在可下載及安裝擴充應用程式前可需要購買該擴充應用程式。提議下載及安裝可呈現於一通知(例如圖5F所示之通知259)中,且此通知可包括一可選擇選項以致使用於所選之訊息泡泡之擴充應用程式的下載及安裝。接著在操作709中,第二裝置下載及安裝擴充應用程式,並可啟動新近安裝之擴充應用程式。在一實施例中,下載及安裝可發生於背景中,同時傳訊應用程式保持為前景。在一實施例中,下載及安裝的進度可顯示於一進度條中(例如所選之訊息泡泡內所示之進度條473)。在完成操作709後,可接著在第二裝置上
使用新近安裝之擴充應用程式,傳訊應用程式在操作711中可在由傳訊應用程式裝載的檢視內將內容及可選的資源定位符與資料提供予第二裝置上之擴充應用程式。
在一實施例中,傳訊應用程式可致使已安裝的擴充應用程式之自動更新。在另一實施例中,傳訊應用程式可為使用者提供某些擴充應用程式需要進行更新之警示或通知,且在一實施例中,關於這些更新的通知可接收自一擴充應用程式市集。此可允許一使用者選擇性決定是否更新特定的傳訊應用程式。
本文所述之實施例的另一態樣係關於貼圖擴充應用程式,且圖15、圖16A、圖16B、及圖16C顯示此態樣之實例。貼圖擴充應用程式係作為用於一傳訊應用程式(例如圖3A所示之一傳訊應用程式76)之擴充而運行,且提供與傳訊應用程式之一訊息文字記錄中的一訊息泡泡相關聯的影像予傳訊應用程式。在一實施例中,一貼圖應用程式可購買自或以其他方式取自一傳訊擴充商店(參見例如圖14B),且所購買的貼圖應用程式可包括一貼圖集合。在一實施例中,影像的檔案大小係限制為小於一預定的資料量。在一實施例中,使用者可在傳訊應用程式的一檢視內使用貼圖擴充應用程式創建影像,接著自訊息應用程式中之貼圖擴充應用程式的檢視將影像拖動至由傳訊應用程式所提供之文字記錄中的一訊息泡泡上。在一實施例中,將影像拖動至訊息泡泡上後,使用者亦可縮放(例如放大或縮小)及旋轉所選之訊息泡泡上的貼圖影像。在一實施例中,使用者亦可將一貼圖應用至暫存待傳送但尚未傳送的一訊息泡泡。在一實施例中,傳送裝置傳送一加密影像檔案予一傳訊伺服器,並接收一
下載符記(token)(以及一相關聯的存活時間(time-to-live,TTL)值),其中該符記代表加密影像檔案。在一實施例中,影像檔案係如本文所述以每一傳送者為基礎進行加密,且因此傳訊伺服器可儲存相同貼圖的多個執行個體(instance),各者係以不同傳送裝置的一不同金鑰加密,且各者具有一存活時間值,該存活時間值可在適當的傳送裝置傳送下載符記(先前取自伺服器)至伺服器以用於一後續訊息時藉由該適當的傳送裝置再新。在一實施例中,貼圖可係動態的。
當一傳送裝置第一次傳送可經加密之一貼圖影像至一或多個傳訊伺服器時,該傳送裝置接收下載符記及一存活時間值。圖15所示之傳訊系統800可類似於圖2所示之傳訊系統50。具體地,傳訊伺服器801之集合可類似於傳訊伺服器51,且傳送裝置803及接收裝置805可類似於用戶端裝置53及54。此外,在一實施例中,傳送裝置803及接收裝置805可使用圖3A所示之架構,其中一傳訊應用程式76通過如圖3A所示之一IPC與分開的擴充應用程式協同操作。當傳送裝置803第一次傳送811一貼圖影像(其可經加密)連同一訊息(其可經加密)至一或多個傳訊伺服器801之集合時,傳送裝置803接收812一下載符記及一TTL值,該TTL值指示加密貼圖影像在傳訊伺服器801及傳送裝置803之兩者上經排定於何時(同時)逾期。若傳送裝置803再次於一訊息中傳送819貼圖(相同貼圖)至相同或不同的接收裝置而TTL值尚未逾期,則傳送裝置803不會再次上傳貼圖影像,而是傳送819下載符記至一或多個訊息伺服器801,其亦致使伺服器801之存活時間值再新(且亦致使儲存於傳送裝置803處之TTL值再新)。若存活時間值已逾期,則傳送裝置803將再次上傳加密貼圖影像(其可以一不同金鑰加密),且將自一或多個傳訊伺服器801之集合接收另一下載符
記。一或多個伺服器801之集合可保存一加密貼圖之資料庫802,對各加密貼圖而言,該資料庫具有對應的符記及一對應的存活時間值。具體地,一加密貼圖1可具有資料庫802之列821所示之一對應的符記值token 1及一對應的存活值TTL1。類似地,另一加密貼圖影像可具有加密貼圖2的一複本以及其在列823中之對應的token 2及TTL2值以用於資料庫802中之其列823。在一替代實施例中,貼圖1及貼圖2可係用於相同貼圖影像但用於不同接收者之加密影像(但來自相同的傳送裝置),且係以不同的金鑰加密從而係分開儲存並處於資料庫的分開列中。雖然針對圖15所述之實施例使用用於貼圖之TTL值,將理解傳送自一傳訊應用程式的其他物件亦可以相同方式使用TTL值,且此等其他物件可包括影像、文件、可執行檔(例如遊戲)等。
圖16A顯示根據一實施例之一方法,其中傳送裝置803與一或多個傳訊伺服器801之集合互動。在操作851中,貼圖擴充應用程式創建一貼圖影像及影像之一雜湊(hash),且可接收使用者輸入以判定影像後設資料(例如縮放及旋轉後設資料)。在一實施例中,創建貼圖影像可僅涉及選擇一具體貼圖影像(例如來自圖16C所示之一可瀏覽的貼圖檢視835之貼圖影像841),以及拖動所選貼圖(例如貼圖841)至可能已藉由通信裝置831傳送之一訊息上(例如訊息泡泡839)(或者在訊息文字記錄中或文字暫存區中之任何其他訊息泡泡)。類似地,在訊息泡泡839上創建花朵貼圖可僅涉及自可瀏覽的貼圖檢視835將貼圖843拖動至訊息泡泡839上(或者在訊息文字記錄中或文字暫存區中之任何其他訊息泡泡),以及實行任何影像調處(image manipulation)(例如在花朵於訊息泡泡839上的同時進行縮放或旋轉)。回頭參照圖16A,在操作851
中,傳訊應用程式自貼圖應用程式接收貼圖影像及影像後設資料(例如旋轉後設資料及縮放後設資料)與用於在一指定的訊息泡泡上定位的位置後設資料,並將一泡泡識別符(其可經識別為指定的訊息泡泡)及一貼圖擴充應用程式識別符與貼圖影像相關聯。接著在操作853中,傳送裝置上之傳訊應用程式上傳用於遞送至接收裝置之加密訊息(若有)及加密貼圖影像與後設資料至一或多個傳訊伺服器。此上傳程序係顯示為圖15之傳送811。之後在操作855中,傳送裝置(例如傳送裝置803)自一或多個傳訊伺服器801接收一下載符記,並儲存該符記及一相關聯的TTL值以用於對應的加密貼圖影像。此係顯示為圖15之接收812。在圖16A之操作857中,傳送裝置亦可選擇地接收訊息之已接收確認(confirmation of receipt)。接著,在用於後續傳送相同影像貼圖至相同接收裝置或其他接收裝置(在一實施例中)之操作859中,只要TTL值尚未逾期,傳送裝置803可傳送819用於該貼圖影像之相關聯的符記以用於遞送至相同接收裝置或其他接收裝置(在一實施例中)。在一實施例中,傳送符記可在傳訊伺服器及在傳送裝置803兩處再新TTL值。因此,一或多個傳訊伺服器一經接收用於第二次及後續傳送的符記便將再新資料庫802內之對應的存活時間值。另一方面,若存活時間值已逾期,則傳送裝置803,其將再次上傳加密貼圖影像的另一複本,並自一或多個傳訊伺服器801接收一新的下載符記及一新的存活時間值。
圖16B所示之方法可藉由接收裝置805來實行。在操作875中,接收裝置可接收一加密訊息及一下載符記與對應的後設資料,且此係顯示為圖15中之接收813。在一實施例中,後設資料可包括由遠端貼圖擴充應用程式及貼圖擴充應用程式識別符還有一泡泡識別符與位置後設資料所創建的雜湊,以
指示經識別之訊息泡泡上的一位置以及縮放後設資料與旋轉後設資料,以用於由裝置805上的一傳訊應用程式使用以定位及縮放與旋轉貼圖。在操作877中,傳訊應用程式由在操作875中所接收的雜湊判定接收裝置是否具有儲存於接收裝置上之貼圖影像的一本地複本。若有,則操作881接續在操作877之後,致使處理跳至操作891,如圖16B所示。若無本地複本存在,則操作879接續在操作877之後,且在操作879中,接收裝置805於圖15所示之傳送815中傳送下載符記至一或多個傳訊伺服器801以擷取加密貼圖影像,且之後在操作879中,傳訊應用程式解密該加密貼圖影像。接著在操作891中,接收裝置使用影像後設資料以產生最終貼圖影像,其可包括該影像的一或多個旋轉及放大或縮小(或該影像的其他修改);在一實施例中,接收裝置上的傳訊應用程式實行操作891。之後在操作893中,傳訊應用程式可於訊息文字記錄中之泡泡上(在藉由泡泡識別符識別的泡泡上)展示最終貼圖影像。圖16C顯示一實例,其中使用者已創建兩個貼圖影像並將該等貼圖影像放置於訊息泡泡839上。
在一實施例中,一貼圖擴充應用程式可提供一使用者介面,其允許一或多個使用者自來自一貼圖組件程式庫之貼圖的部件或部分組裝一貼圖,以便創建包括選自該程式庫之部件或部分的一最終貼圖;該程式庫可由貼圖擴充應用程式提供。貼圖擴充應用程式可通過一「精靈(wizard)」引導最終貼圖之創建,該精靈通過創建最終貼圖中所涉及之階段指導使用者。此一類貼圖擴充應用程式的一實例係在2016年6月12日提出申請之美國臨時專利申請案第62/349,091號之附錄II中說明。
圖15所示之實例係用於分配或傳送貼圖至接收裝置的一實施例,且現將說明兩個替代實施例。在一第一替代實施例中,當一貼圖擴充應用程式的一開發者上傳擴充應用程式及其資源與智產(asset)(例如貼圖影像)至一分配設備/服務(例如用於一應用程式線上商店)時,該分配設備/服務可提取智產且將智產儲存於一基於雲端的儲存系統(例如,支援iCloud儲存的一或多個伺服器)中,並提供用於貼圖影像之各者的一唯一識別符(例如全域唯一識別符-GUID)且將GUID與對應的貼圖影像相關聯。分配設備/服務亦可以貼圖擴充應用程式儲存唯一識別符(例如作為包括貼圖擴充應用程式之一配套(bundle)的部件),以便一傳送裝置(例如裝置803)可使用與應用程式包括在一起之用於貼圖影像的唯一識別符來安裝貼圖擴充應用程式。當傳送裝置傳送具有由貼圖擴充應用程式所創建之一貼圖的一訊息時,傳送裝置上之傳訊應用程式將用於貼圖之唯一識別符傳送至接收裝置上之傳訊應用程式。接收裝置上之傳訊應用程式接著可藉由傳送唯一識別符至基於雲端的儲存系統來擷取貼圖影像(若在接收裝置上未於本地儲存),該基於雲端的儲存系統可藉由傳送經識別之貼圖影像至接收裝置來回應。
第二替代實施例支援可由一使用者(其使用一影像創建或捕捉應用程式來產生一新貼圖)產生的新貼圖,且第二替代實施例亦可使用一基於雲端的儲存服務,當一接收裝置請求貼圖時,該基於雲端的儲存服務使用一貼圖影像的一識別符(例如該貼圖影像的一雜湊)來擷取該貼圖影像。當一傳送裝置(例如傳送裝置803)傳送一貼圖時,其可針對先前經傳送至一或多個傳訊伺服器之集合的一貼圖清單檢查其本地儲存,且若先前已傳送該貼圖,則傳
送裝置傳送該貼圖之一識別符至接收裝置。識別符可係一雜湊(例如貼圖影像之一SHA-1雜湊或MD1雜湊),且此識別符將與貼圖影像之內容相依,且事實上在所有狀況下均係該貼圖影像之一可靠的唯一識別符。接收裝置在自傳送裝置接收識別符後可使用識別符自基於雲端的儲存服務擷取貼圖,該基於雲端的儲存服務在一實施例中使用識別符作為一金鑰以在一資料庫中查找貼圖影像,且接著該基於雲端的儲存服務傳送經擷取的貼圖影像至接收裝置。若傳送裝置在針對先前傳送之貼圖檢查其本地儲存時判定先前並未藉由傳送裝置之傳訊應用程式傳送貼圖影像,則傳訊應用程式可傳送貼圖影像至基於雲端的儲存服務(直接傳送或通過(一或多個)傳訊伺服器傳送之任一者,該(一或多個)傳訊伺服器可創建貼圖影像之雜湊(識別符)並在基於雲端的儲存服務中儲存兩者;傳送裝置亦可傳送識別符(例如貼圖影像之雜湊)至接收裝置,接收裝置可使用識別符以自基於雲端的儲存服務擷取貼圖影像。
在一些實施例中,可使用一或多個應用程式設計介面(Application Programming Interface,API)。一API係由一程式碼組件或硬體組件(在下文中為「API實施組件」)實施的一介面,其允許一不同程式碼組件或硬體組件(在下文中為「API呼叫組件」)存取及使用由該API實施組件提供之一或多個函式、方法、程序、資料結構、類別、及/或其他服務。一API可定義在API呼叫組件與API實施組件之間傳遞的一或多個參數。
一API允許一API呼叫組件的一開發者(其可為一第三方開發者)利用由一API實施組件提供之指定特徵。可存在一個API呼叫組件或可存在多於一個此類組件。一API可係一電腦系統或程式庫所提供以便支援來自一應
用程式之對服務的請求之一原始碼介面。一作業系統(OS)可具有多個API以允許在OS上運行之應用程式呼叫彼等API之一或多者,且一服務(例如一程式庫)可具有多個API以允許使用該服務之一應用程式呼叫彼等API之一或多者。可在建置一應用程式時用可解譯或編譯之一程式設計語言來指定API。
在一些實施例中,API實施組件可提供多於一個API,其等之各者提供一不同檢視或具有存取由該API實施組件實施之功能的不同態樣之不同態樣。例如,一API實施組件的一個API可提供一第一功能集合且可向第三方開發者公開,且API實施組件的另一個API可被隱藏(未公開)且提供第一功能集合之一子集且亦提供另一功能集合(例如不在第一功能集合中之測試或除錯功能)。在其他實施中,API實施組件本身可經由一基礎API呼叫一或多個其他組件,且因此該API實施組件兼具一API呼叫組件及一API實施組件兩者。
一API定義API呼叫組件在存取及使用API實施組件之指定特徵時所用的語言及參數。例如,一API呼叫組件通過API所公開的一或多個API呼叫或叫用(invocation)(例如藉由函式或方法呼叫所體現者)來存取API實施組件之指定特徵,且經由該等API呼叫或叫用使用參數來傳遞資料及控制資訊。API實施組件可回應於來自一API呼叫組件之一API呼叫而通過API傳回一值。雖然API定義一API呼叫之語法及結果(例如,如何叫用API呼叫及API呼叫做什麼),API可不揭露API呼叫如何完成API呼叫所指定的功能。經由一或多個應用程式設計介面在呼叫(API呼叫組件)與一API實施組件之間傳送各種API呼叫。傳送API呼叫可包括發佈、起始、叫用、呼叫、接收、傳回、或回應於函式呼叫或訊息;換言之,傳送可描述API呼叫組件或API實施組件中之任一者
的動作。API之函式呼叫或其他叫用可通過一參數清單或其他結構來傳送或接收一或多個參數。一參數可為一常數、金鑰、資料結構、物件、物件類別、變數、資料類型、指標、陣列、清單、或針對一函式或方法之指標、或者參考欲經由API傳遞之一資料或其他項目的另一方式。
此外,資料類型或類別可由API提供且由API實施組件實施。因此,API呼叫組件可藉由使用API中所提供之定義來宣告變數、使用指標來使用或樣例化此等類型或類別之常數值。
通常,一API可用於存取由API實施組件提供之一服務或資料或者用於起始由API實施組件提供之一操作或運算之實行。作為實例,API實施組件及API呼叫組件可各自為一作業系統、一程式庫、一裝置驅動程式、一API、一應用程式、或其他模組之任一者(須了解API實施組件及API呼叫組件可為彼此相同或不同類型的模組)。在一些情況下,API實施組件可至少部分地以韌體、微碼、或其他硬體邏輯體現。在一些實施例中,一API可允許一用戶端程式(例如遊戲中心應用)使用由一軟體開發套件(SDK)程式庫所提供的服務。在其他實施例中,一應用程式或其他用戶端程式可使用由一應用程式框架所提供的一API。在此等實施例中,應用程式或用戶端程式可將呼叫併入至由SDK提供及由API提供之函式或方法或者使用SDK中所定義及由API提供之資料類型或物件。在此等實施例中,一應用程式框架可為一程式提供回應於由框架定義之各種事件的一主事件迴圈。API允許應用程式使用應用程式框架來指定事件及對事件之回應。在一些實施方案中,一API呼叫可向一應用程式報告一硬體裝置的能力或狀態,包括與例如輸入能力及狀態、輸出能力及狀態、處理能
力、電力狀態、儲存容量及狀態、通信能力等之態樣相關者,且API可部分地藉由韌體、微碼、或部分地在硬體組件上執行之其他低階邏輯來實施。
API呼叫組件可為一本地組件(亦即,在與API實施組件相同的資料處理系統上)或為經由一網路通過API與API實施組件通信的一遠端組件(亦即,在與API實施組件不同的資料處理系統上)。須了解一API實施組件亦可充當一API呼叫組件(亦即,該API實施組件可對由一不同的API實施組件公開的一API進行API呼叫),且一API呼叫組件亦可藉由實施向一不同的API呼叫組件公開之一API而充當一API實施組件。
API可允許以不同程式設計語言撰寫之多個API呼叫組件與API實施組件通信(因此,API可包括用於轉譯API實施組件與API呼叫組件之間的呼叫及傳回的特徵);然而,可用一特定程式設計語言來實施API。在一實施例中,一API呼叫組件可呼叫來自不同提供者的API(例如來自一OS提供者的一API集合、及來自一外掛程式提供者的另一API集合、以及來自另一提供者(例如一軟體程式庫之提供者)或另一API集合之創建者的另一API集合)。
圖17係方塊圖,其繪示一例示性API架構,該架構可用於本發明之一實施例中。如圖17所示,API架構3200包括實施API 3220之API實施組件3210(例如一作業系統、一程式庫、一裝置驅動程式、一API、一應用程式、軟體或其他模組)。API 3220指定可由API呼叫組件3230使用之一或多個函式、方法、類別、物件、協定、資料結構、格式、及/或API實施組件的其他特徵。API 3220可指定至少一呼叫慣例,該至少一呼叫慣例指定API實施組件中之一函式如何自API呼叫組件接收參數及該函式如何將一結果傳回至API呼叫組
件。API呼叫組件3230(例如一作業系統、一程式庫、一裝置驅動程式、一API、一應用程式、軟體或其他模組)通過API 3220進行API呼叫以存取及使用由API 3220指定之API實施組件3210的特徵。API實施組件3210可回應於一API呼叫而通過API 3220將一值傳回至API呼叫組件3230。
將理解API實施組件3210可包括未通過API 3220指定且不可供API呼叫組件3230使用之額外函式、方法、類別、資料結構、及/或其他特徵。須了解API呼叫組件3230可與API實施組件3210在相同系統上或者可經定位於遠端且經由一網路使用API 3220存取API實施組件3210。雖然圖32繪示單個API呼叫組件3230與API 3220互動,須了解其他API呼叫組件可使用API 3220,該等其他API呼叫組件可以與API呼叫組件3230不同的語言(或相同的語言)來撰寫。
API實施組件3210、API 3220、及API呼叫組件3230可儲存於一機器可讀媒體(例如電腦可讀媒體)中,機器可讀媒體包括用於儲存呈可由一機器(例如,一電腦或其他資料處理系統)讀取之一形式之資訊的任何機構。例如,一機器可讀媒體包括磁碟、光碟、隨機存取記憶體;唯讀記憶體、快閃記憶體裝置等。
在圖18(「軟體堆疊」)中,於本發明之一實施例中,應用程式可使用若干服務API對服務A或服務B進行呼叫並使用若干OS API對作業系統(OS)進行呼叫。服務A及服務B可使用若干OS API對OS進行呼叫。
須注意服務2具有兩個API,其中一者(服務2 API 1)自應用程式1接收呼叫並將值傳回至該應用程式,而另一者(服務2 API 2)自應用程式2接收呼叫並將值傳回至該應用程式。服務1(其可為(例如)一軟體程式庫)
對OS API 1進行呼叫且自該OS API接收傳回值,而服務2(其可為(例如)一軟體程式庫)對OS API 1及OS API 2兩者進行呼叫且自該兩者接收傳回值。應用程式2對OS API 2進行呼叫且自該OS API接收傳回值。
本文所述之系統及方法可以各種不同的資料處理系統及裝置實施,包括通用電腦系統、特殊用途電腦系統、或通用及特殊用途電腦系統之一混成。可使用本文所述之方法之任一者的例示性資料處理系統包括桌上型電腦、膝上型電腦、平板電腦、智慧型手機、蜂巢式電話、個人數位助理(PDA)、嵌入式電子裝置、或消費者電子裝置。
圖19係根據一實施例之資料處理系統硬體的方塊圖。須注意雖然圖19繪示可併入一行動裝置或手持式裝置之一資料處理系統的各種組件,其並非意欲代表組件互連之任何具體架構或方式,因此細節與本發明並無密切關係。亦將理解具有比圖19所示之組件更少或更多組件之其他類型的資料處理系統亦可與本發明併用。
如圖19所示,資料處理系統包括一或多個匯流排1309,其作用於使系統之各種組件互連。一或多個處理器1303係耦接至一或多個匯流排1309,如所屬技術領域中已知者。記憶體1305可係DRAM或非揮發性RAM,或者可係快閃記憶體、或其他類型的記憶體、或此類記憶體裝置之一組合。此記憶體係使用所屬技術領域中已知的技術耦接至一或多個匯流排1309。資料處理系統亦可包括非揮發性記憶體1307,其可係一硬式磁碟機或一快閃記憶體或一磁性光學裝置或磁性記憶體或一光學驅動機或其他類型的記憶體系統,其等即使在自系統移除電力後仍保存資料。非揮發性記憶體1307及記憶體1305兩者均
使用已知介面及連接技術耦接至一或多個匯流排1309。一顯示器控制器1322係經耦接至一或多個匯流排1309,以便在一顯示器裝置1323上接收欲展示之顯示器資料。顯示器裝置1323可包括一集成式觸控輸入以提供一觸控螢幕。資料處理系統亦可包括一或多個輸入/輸出(I/O)控制器1315,其等提供用於一或多個I/O裝置之介面,例如一或多個滑鼠、觸控螢幕、觸控板、搖桿、以及其他輸入裝置(包括所屬技術領域中已知者)與輸出裝置(例如揚聲器)。如所屬技術領域中已知者,輸入/輸出裝置1317係通過一或多個I/O控制器1315耦接。
雖然圖19顯示非揮發性記憶體1307及記憶體1305係直接而非通過一網路介面耦接至一或多個匯流排,將理解本發明可利用處於系統遠端之非揮發性記憶體(例如一網路儲存裝置),其係通過一網路介面(例如一數據機或乙太網路介面)耦接至資料處理系統。匯流排1309可通過所屬技術領域中眾所周知之各種橋接器、控制器、及/或轉接器彼此連接。在一實施例中,I/O控制器1315包括下列之一或多者:一USB(通用串列匯流排)轉接器,其用於控制USB周邊設備;一IEEE 1394控制器,其用於IEEE 1394適用之周邊設備;或一雷電介面控制器,其用於控制雷電介面周邊設備。在一實施例中,一或多個網路裝置1325可經耦接至(一或多個)匯流排1309。(一或多個)網路裝置1325可係有線網路裝置(例如乙太網路)或無線網路裝置(例如WI-FI、藍芽)。
自此說明書將明白本發明之態樣可至少部分地使用軟體來體現。也就是,該等技術可回應於一資料處理系統之處理器執行一儲存媒體內含的一連串指令而在該資料處理系統中實行,儲存媒體係例如一非暫時性機器可
讀儲存媒體(例如DRAM或快閃記憶體)。在各種實施例中,可將硬連線電路系統與軟體指令結合使用以實施本發明。因此,該等技術不受限於硬體電路系統與軟體之任何特定組合或不受限於用於資料處理系統所執行之指令的任何具體來源。此外,將了解在描述行動裝置及手持式裝置處,該描述涵括行動裝置(例如膝上型電腦裝置、平板裝置)、手持式裝置(例如智慧型手機)、以及適於用在穿戴式電子裝置中之嵌入式系統。
本揭露認知到,在本技術中,個人資訊資料之使用可用於對使用者有益。例如,可使用個人資訊資料來遞送使用者較關注的資訊或經定目標內容。據此,使用此類個人資訊資料可實現所遞送之內容的經計算控制。進一步,本揭露亦設想有益於使用者的個人資訊資料之其他用途。
本揭露進一步設想,負責此類個人資訊資料之收集、分析、揭露、傳送、儲存、或其他使用的實體將遵循經妥善制定之隱私權政策及/或隱私權作法。具體而言,此類實體應實施及一致地使用一般認知為符合或超過產業或政府對維持個人資訊資料隱私及安全之要求的隱私權政策及隱私權作法。例如,應收集來自使用者的個人資訊以供實體合法且合理使用且不分享或出售而超過彼等合法使用。進一步,此類收集應僅發生在接收到使用者的知情同意(informed consent)之後。此外,此類實體將採取任何必要步驟來保障並保護存取此類個人資訊資料的安全,並且確保可存取個人資訊資料的其他者遵守其等之隱私權政策及程序。進一步,可由第三方評鑑此類實體本身,以認證該等實體遵守廣泛接受之隱私權政策及隱私權作法。
儘管有前述內文,本揭露亦設想其中使用者選擇性封鎖對個人資訊資料之使用或存取的實施例。即,本揭露設想,可提供硬體及/或軟體元件以防止或封鎖對此類個人資訊資料之存取。例如,在健康資訊或廣告遞送服務之情況中,本技術可經組態以允許使用者在註冊服務期間選擇「加入」或「退出」參與個人資訊資料之收集。在另一實例中,使用者可選擇不對經定目標之內容遞送服務提供地點資訊。在又另一實例中,使用者可選擇不提供精確地點資訊,但是准許傳送定位區(location zone)資訊。
在前述說明書中,已說明特定例示性實施例。將係顯而易見的是,在不偏離於下列申請專利範圍中提出之較廣精神與範疇的情況下,對彼等實施例可作出各種修改。據此,說明書及圖式係視為說明目的而非限制目的。
下列附錄說明用於一iOS裝置之一應用程式設計介面的一實例,該iOS裝置使用來自Apple Inc.of Cupertino,California之iOS作業系統。此API提供本文所述之擴充應用程式與一iOS裝置上之一傳訊應用程式之間的互動。
重新命名已定義之類型的一些,將一些協定改變成類別且反之亦然。受影響的類型係:
○將MSMessageContext變成一類別,且將其重新命名為MSConversation。此名稱更準確地描述此類別所代表者。
○將MSMessagePayload重新命名為MSMessage。新名稱更能描述該類別,因為此物件不只代表欲傳送之訊息酬載。
○將MSBalloonLayout重新命名為MSMessageLayout。氣球一字描述當前UI,此不須銘記於API中。
○將MSBalloonTemplateLayout重新命名為MSMessageTemplateLayout。
○將MSMessageTemplateLayout變成一協定,並新增實施該協定之具有相同名稱的一類別。採用該API之開發者在無法創建實施MSBalloonLayout協定之屬於其等自身的物件時會感到混淆。此改變允許開發者提供其等自身之符合MSMessageTemplateLayout的物件。
○將MSSticker協定變成一類別。一貼圖的概念類似於一UI影像(UIImage),因此其亦必須是一具象類別。MSSticker與MSStickerView之間的關係必須類似於UIImage與UIImageView之間的關係。
新增新功能:
○新增新MSSession類別。使用一工作階段來初始化的一MSMessages可參與「階層連結」行為。亦即,以相同工作階段在一交談中創建的所有訊息將更新交談文字記錄中的單個氣球,且可選
地在該文字記錄中留下階層連結登錄的一軌跡。在此提案前,此行為係藉由修改MSMessageContext所提供的輸入訊息以及將經修改的物件傳遞至-updateMessagePayload:completionHandler:來達成。
○新增一MSConversationDelegate協定,其定義用於MSConversation之委派的委派介面(delegate interface)。當使用者在一MSMessage經暫存用於傳送的同時輕觸傳送按鈕以及當使用者自輸入欄刪除一經暫存的MSMessage時,該委派將接收回呼(callback)。若來自此擴充類型之一新訊息在擴充啟用的同時抵達交談,該委派亦將接收一回呼。
○在NSExtensionContext上新增一類目,其允許擴充獲取其如何呈現的資訊以及請求變更呈現式樣。此允許擴充請求展開或收合的呈現以及請求對其完全無視。
○將MSMessagePayloadProvider上的回呼以在UIApplicationDelegate上經仿效的一回呼集合取代。
○將-updateMessagePayload:completionHandler:重新命名為-insertMessage:localizedChangeDescription:completionHandler:。更新一字看起來好像會讓人混淆,因為該方法將在無暫存用於傳送之MSMessage時插入一新訊息。此亦新增一
localizedChangeDescription參數,該參數允許開發者提供階層連結文字。
/*! @header MSMessagePayloadProvider @copyright Copyright (c) 2016 Apple Inc. All rights reserved. */#import <UIKit/UIKit.h>@class MSConversation; NS_ASSUME_NONNULL_BEGIN /*! @enum MSMessagePayloadProviderPresentationStyle @abstract Describes how the extension is presented in Messages. @constant MSMessagePayloadProviderPresentationStyleCompact The extension's UI is presented compact in the keyboard area. @constant MSMessagePayloadProviderPresentationStyleExpanded The extension's UI is presented expanded taking up most of the screen. */typedef NS_ENUM(NSUInteger, MSMessagePayloadProviderPresentationStyle) {MSMessagePayloadProviderPresentationStyleCompact, MSMessagePayloadProviderPresentationStyleExpanded} NS_ENUM_AVAILABLE_IOS(10_0);/*!
@protocol MSMessagePayloadProvider @abstract The MSMessagePayloadProvider protocol provides the interface used to communicate with the Messages.app. @discussion A Message Extension's principle class must be a subclass of UIViewController and must implement the MSMessagePayloadProvider protocol. The UIViewController subclasses's view will be embedded in Messages UI and should adapt dynamically to layout changes. */NS_CLASS_AVAILABLE_IOS(10_0)@protocol MSMessagePayloadProvider <NSObject>@optional /*! @method willBecomeActiveWithConversation: @abstract Tells the extension that a conversation will become active. @param conversation The conversation that will become active. */-(void)willBecomeActiveWithConversation:(MSConversation *)conversation;/*! @method didBecomeActiveWithConversation: @abstract Tells the extension that a conversation did become active. @param conversation The conversation that did become active. */-(void)didBecomeActiveWithConversation:(MSConversation *)conversation;/*! @method willResignActiveWithConversation: @abstract Tells the extension that a conversation will resign active. @param conversation The conversation that will resign active. */-(void)willResignActiveWithConversation:(MSConversation *)conversation;/*! @method didResignActiveWithConversation: @abstract Tells the extension that a conversation did resign active. @param conversation The conversation that did resign active. */-(void)didResignActiveWithConversation:(MSConversation *)conversation;/*! @method willTransitionToPresentationStyle:
@abstract Tells the extension that it is about to transition to a new presentation style. @param presentationStyle The new presentation style. */- (void)willTransitionToPresentationStyle:(MSMessagePayloadProviderPresentationStyle)presentationStyle;/*! @method didTransitionToPresentationStyle: @abstract Tells the extension that it finished transitioning to a presentation style. @param presentationStyle The new presentation style. */- (void)didTransitionToPresentationStyle:(MSMessagePayloadProviderPresentationStyle)presentationStyle;@endNS_CLASS_AVAILABLE_IOS(10_0)@interface NSExtensionContext (MSMessagePayloadProviderAdditions)/*! @property presentationStyle @abstract Get the presentation extension's current presentation style. */@property (nonatomic, assign, readonly) MSMessagePayloadProviderPresentationStyle presentationStyle;/*! @method requestPresentationStyle: @abstract Requests that Messages transition the extension to the specified presentation style. @param presentationStyle The presentation style to transition to. */- (void)requestPresentationStyle:(MSMessagePayloadProviderPresentationStyle)presentationStyle;/*! @method dismiss @abstract Tells the Messages to dismiss the extension and present the keyboard. */-(void)dismiss;@end
NS_ASSUME_NONNULL_END
/*! @header MSConversation @copyright Copyright (c) 2016 Apple Inc. All rights reserved. */#import <UIKit/UIKit.h> NS_ASSUME_NONNULL_BEGIN @protocol MSConversationDelegate, MSInputFieldProxy;@class MSSticker;@class MSMessage;NS_CLASS_AVAILABLE_IOS(10_0)@interface MSConversation:NSObject /*! @method activeConversation @abstract Returns the current active conversation. */+ (instancetype)activeConversation;/*! @property delegate @abstract The conversation delegate will be notified when the conversation state changes. */@property (nonatomic, weak) id<MSConversationDelegate> delegate;/*! @property localParticipantIdentifier @abstract A NSUUID that identifies conversation participant on this device. @discussion This NSUUID that identifies conversation participant on this device, this value will be stable while the extension is enabled. If the extension is disabled and re-enabled or the containing App is removed and re-installed this
value will change. */@property (nonatomic, readonly) NSUUID *localParticipantIdentifier;/*! @property recipientIdentityTokens @abstract A NSArray of NSUUID instances, each uniquely identifies a remote participant in the conversation. @discussion Each NSUUID identifies the a remote participant in the conversation scoped to this device. These values will be stable while the extension is enabled. If the extension is disabled and re-enabled or the containing App is removed and re-installed these values will change. */@property (nonatomic, readonly) NSArray<NSUUID *> *remoteParticipantIdentifiers;/*! @property selectedMessage @abstract An MSMessage instance that may be edited and returned to Messages @discussion If the extension has been invoked in response to the user interacting with a message balloon in the conversation transcript this property will contain the message. Otherwise this property will be nil. The message object provided may be saved to the file system. Later, this saved object may be loaded, modified and staged for sending. */@property (nonatomic, readonly, nullable) MSMessage *selectedMessage;/*! @method insertMessage:localizedChangeDescription:completionHandler: @abstract Stages provided the MSMessage for sending. @discussion This method inserts a MSMessage object into the Messages input field, Subsequent calls to this method will replace any existing message on the input field. If the MSMessage was initialized with the session identifier of an existing message, the existing message will be updated and moved to the bottom of the conversation transcript. If a change description text is provided, Messages will use this to construct an entry in the conversation transcript to replace the updated message.
If the message was successfully inserted on the input field, the completion handler will be called with a nil error parameter otherwise the error parameter will be populated with an NSError object describing the failure. @param message The MSMessage instance describing the message to be sent. @param changeDescription A succinct string describing changes made to the message instance. @param completionHandler A completion handler called when the message has been staged or if there was an error. */- (void)insertMessage:(MSMessage *)message localizedChangeDescription:(nullable NSString *)changeDescription completionHandler:(void(^)(NSError * _nullable))completionHandler;/*! @method insertSticker:completionHandler: @abstract The sticker is inserted into the Messages.app input field. @param sticker The sticker to be inserted. @param completionHandler A completion handler called when the insert is complete. */- (void)insertSticker:(MSSticker *)sticker completionHandler:(void(^)(NSError * _nullable))completionHandler;/*! @method insertText:completionHandler: @abstract The NSString instance provided in the text parameter is inserted into the Messages.app input field. @param text The text to be inserted. @param completionHandler A completion handler called when the insert is complete. */- (void)insertText:(NSString*)text completionHandler:(void(^)(NSError * _nullable))completionHandler;/*! @method insertAttachment:withAlternateFilename:completionHandler:
@abstract The NSURL instance provided in the URL parameter is inserted into the Messages.app input field. This must be a file URL. @param URL The URL to the media file to be inserted. @param filename If you supply a string here, the message UI uses it for the attachment. Use an alternate filename to better describe the attachment or to make the name more readable. @param completionHandler A completion handler called when the insert is complete. */- (void)insertAttachment:(NSURL*)URL withAlternateFilename:(nullable NSString *)filename completionHandler:(void(^)(NSError * _nullable))completionHandler;@endNS_CLASS_AVAILABLE_IOS(10_0)@protocol MSConversationDelegate <NSObject>@optional /*! @method conversation:didReceiveMessage: @abstract Informs the delegate that a new message that is part of this conversation has arrived. @param conversation The conversation. @param message The message received. */-(void)conversation:(MSConversation *)conversation didReceiveMessage:(MSMessage *)message;/*! @method conversation:didStartSendingMessage: @abstract Informs the delegate that the message send has been triggered. @discussion This is called when a user interaction with Messages start the message send process. It does not guarantee that the message will be successfully sent or delivered. @param conversation The conversation.
@param message The message being sent. */-(void)conversation:(MSConversation *)conversation didStartSendingMessage:(MSMessage *)message;/*! @method conversation:didCancelSendingMessage: @abstract Informs the delegate that the user has removed the message from the input field. @param conversation The conversation. @param message The message sent. */-(void)conversation:(MSConversation *)conversation didCancelSendingMessage:(MSMessage *)message;@end NS_ASSUME_NONNULL_END
/*! @header MSMessage @copyright Copyright (c) 2016 Apple Inc. All rights reserved. */#import <UIKit/UIKit.h>@protocol MSMessageLayout;@class MSSession; NS_ASSUME_NONNULL_BEGIN /*! @class MSMessage @abstract The MSMessage encapsulates the data to be transferred to remote devices. @discussion This class provides image and text resources required to construct a transcript balloon and allows a Message Extension to include additional data in the message. This data is delivered to the extension's counterpart running on a
remote device. */NS_CLASS_AVAILABLE_IOS(10_0)@interface MSMessage:NSObject <NSCopying, NSSecureCoding>/*! @method init @abstract Initializes a new message that is not part of a session. */-(instancetype)init NS_DESIGNATED_INITIALIZER;/*! @method initWithSession: @abstract Initializes a message with a session. @see insertMessage:localizedChangeDescription:completionHandler: @param session The session that new message will join. */-(instancetype)initWithSession:(MSSession *)session NS_DESIGNATED_INITIALIZER;/*! @property session @abstract An NSUUID that identifies the session that message belongs to. */@property (nonatomic, readonly) MSSession *session;/*! @property senderParticipantIdentifier @abstract A NSUUID instance that identifies the participant that sent the message. @discussion This NSUUID identifies the message's sender. This value is scoped to the current device and will be different on all devices that participate in the conversation. */@property (nonatomic, readonly) NSUUID *senderParticipantIdentifier;/*! @property layout @abstract An object conforming to id<MSBalloonLayout>. @discussion This will be used to provide values used with a layout to constructing a message balloon for display in the conversation transcript. Messages will pick a layout based on the concrete class and the values it provides. */@property (nonatomic, copy) id<MSMessageLayout> layout;/*! @property URL @abstract A HTTP(S) URL used to encode data to be transferred in message.
@discussion This URL should encode any data that is to be delivered to the extension running on the recipient's device(s). when no app exists on the receiving device that can consume the message this URL will be loaded in a web browser. */@property (nonatomic, copy) NSURL *URL;/*! @property shouldExpire @abstract A Boolean value that indicates whether the messages should expire after being read. @discussion YES if the message should expire after it is read. Expired messages will be deleted a short time after being read by the receiver. The user may opt to keep the message. This property defaults to NO. */@property (nonatomic, assign) BOOL shouldExpire;/*! @property statusText @abstract A string that will replace the default status text shown under the balloon. @discussion The text may include one or more variable names, these are prefixed with '$'. The UUIDs available via MSMessageContext's senderIdentifier and recipientIdentifiers properties may be used as variable names and as a convenience $SENDER is also supported. */@property (nonatomic, copy, nullable) NSString *statusText;/*! @property accessibilityLabel @abstract A localized string describing the message. @discussion This string should provide a succinct description of the message. This will be used by the Accessibility Speech feature when speaking the message balloon representing this message for users with disabilities. */@property (nonatomic, copy, nullable) NSString *accessibilityLabel;/*!
@property error @abstract An error object that indicates why a message failed to send. @discussion This value is nil if the message is has not yet been sent, is still sending or has been sent successfully. */@property (nonatomic, copy, nullable) NSError *error;@end NS_ASSUME_NONNULL_END
//// MSMessageLayout.h// Messages//// Copyright © 2016 Apple Inc. All rights reserved.//#import <UIKit/UIKit.h> NS_ASSUME_NONNULL_BEGIN NS_CLASS_AVAILABLE_IOS(10_0)@protocol MSMessageLayout <NSObject, NSCopying>@end NS_ASSUME_NONNULL_END
//// MSMessageTemplateLayout// Messages//// Copyright © 2016 Apple Inc. All rights reserved.//#import <Foundation/Foundation.h>#import <Messages/MSMessageLayout.h>
NS_ASSUME_NONNULL_BEGIN NS_CLASS_AVAILABLE_IOS(10_0)@protocol MSMessageTemplateLayout <MSMessageLayout>/*! @property caption @abstract Text to be used as a caption related to the message content. */@property (nonatomic, copy, nullable) NSString *caption;/*! @property subcaption @abstract Text to be used as a subcaption related to the message content. */@property (nonatomic, copy, nullable) NSString *subcaption;/*! @property trailingCaption @abstract Text to be drawn right aligned on the same line as the caption text. */@property (nonatomic, copy, nullable) NSString *trailingCaption;/*! @property trailingSubcaption @abstract Text to be drawn right aligned on the same line as the subcaption text. */@property (nonatomic, copy, nullable) NSString *trailingSubcaption;/*! @property image @abstract A UIImage instance displayed as the primary image of the transcript balloon. @discussion When this property and the mediaURL property are both set, the mediaURL property will be ignored. */@property (nonatomic, strong, nullable) UIImage *image;/*! @property mediaFileURL @abstract The URL to a media file displayed as the primary image of the transcript balloon. @discussion This must be a file URL, the data contained in the file must conform to kUTTypeImage or kUTTypeMovie. When image property and this property are both set, the this property will be ignored. */@property (nonatomic, copy, nullable) NSURL *mediaFileURL;/*!
@property imageTitle @abstract Title text associated with the image or media. */@property (nonatomic, copy, nullable) NSString *imageTitle;/*! @property imageSubtitle @abstract Subtitle text associated with the image or media. */@property (nonatomic, copy, nullable) NSString *imageSubtitle;@end/*! @class MSBalloonTemplateLayout @abstract A concrete implementation of the MSMessageTemplateLayout protocol */NS_CLASS_AVAILABLE_IOS(10_0)@interface MSMessageTemplateLayout:NSObject <MSMessageTemplateLayout>@end NS_ASSUME_NONNULL_END
//// MSSession.h// Messages/// Copyright © 2016 Apple Inc. All rights reserved.//#import <Foundation/Foundation.h> NS_ASSUME_NONNULL_BEGIN /*! @class MSSession @abstract A MSSession establishes a relationship between a sequence of messages within a conversation. @discussion Messages that are part of a single session are represented by a single balloon in the conversation transcript. @see insertMessage:localizedChangeDescription:completionHandler: */NS_CLASS_AVAILABLE_IOS(10_0)@interface MSSession:NSObject
@end NS_ASSUME_NONNULL_END
//// MSSticker.h// Messages//// Copyright © 2016 Apple Inc. All rights reserved.//#import <Foundation/Foundation.h>#import <Messages/MessagesDefines.h> NS_ASSUME_NONNULL_BEGIN NS_CLASS_AVAILABLE_IOS(10_0)@interface MSSticker:NSObject - (instancetype)init NS_UNAVAILABLE;/*! @method initWithContentsOfURL:localizedDescription:error: @abstract Initializes a sticker with the contents of the URL and the localized description. @discussion Initializes a sticker with the contents of the URL and the localized description. The specified file must have a maximum size of 500KB and must conform to kUTTypePNG, kUTTypeGIF or kUTTypeJPEG. The image loaded from the file must be no smaller than 172px X 172px and must be no larger 356px x 356px. This localized description string is limited to 150 Unicode characters in length. @param url The URL from which to read sticker data.
@param localizedDescription A succinct localized string describing the sticker. @param error If this method could not initialize a sticker, this will contain an NSError object describing the failure. @return A new sticker object or nil if the method could not initialize a sticker from the specified file and localizedDescription. */- (instancetype)initWithContentsOfURL:(NSURL *)url localizedDescription:(NSString *)localizedDescription error:(NSError * _Nullable *)error NS_DESIGNATED_INITIALIZER;/*! @property imageFileURL @abstract The file URL to the Sticker was initialized with. */@property (nonatomic, strong, readonly) NSURL *imageFileURL;/*! @property localizedDescription @abstract A succinct localized string describing the sticker. */@property (nonatomic, copy, readonly) NSString *localizedDescription;@end NS_ASSUME_NONNULL_END
//// MSStickerBrowserView.h// Messages//// Copyright © 2016 Apple Inc. All rights reserved.//#import <UIKit/UIKit.h>#import <Messages/MSStickerBrowserViewDataSource.h> NS_ASSUME_NONNULL_BEGIN /*! @enum MSStickerSizeClass @abstract Sticker size class is used to control the display size of the stickers in the Sticker Browser View. @constant MSStickerSizeClassSmall Stickers will be drawn in a small frame.
@constant MSStickerSizeClassRegular Stickers will be drawn in a medium frame. @constant MSStickerSizeClassLarge Stickers will be drawn in a large frame. */typedef NS_ENUM(NSInteger, MSStickerSizeClass) {MSStickerSizeClassSmall, MSStickerSizeClassRegular, MSStickerSizeClassLarge } NS_ENUM_AVAILABLE_IOS(10_0);/*! @class MSStickerBrowserView @abstract A UIView subclass that can display a collection of sticker assets. @discussion This class is a UIView subclass intended to display a collection of stickers. It provides drag and drop functionality so that user may drag an individual stickers from this view and place it in the Messages transcript. Stickers may also be tapped to add them directly to Messages input field. */NS_CLASS_AVAILABLE_IOS(10_0)@interface MSStickerBrowserView:UIView /*! @method initWithFrame: @abstract Initializes a MSStickerBrowserView with a frame using the regular size class. */- (instancetype)initWithFrame:(CGRect)frame NS_DESIGNATED_INITIALIZER;/*! @method initWithFrame:stickerSizeClass: @abstract Initializes a MSStickerBrowserView with a frame and sticker size class. @discussion Sticker images will be laid out in a grid similar to a UICollectionView configured with flow layout. @property sizeClass hints the size of the cells, the size a sticker is drawn at will vary based on the device. Sticker images will be scaled down to fit in the grid cell. If the
sticker image is smaller than the cell size measured in pixels then it will be centered in the grid cell. */- (instancetype)initWithFrame:(CGRect)frame stickerSizeClass:(MSStickerSizeClass)sizeClass NS_DESIGNATED_INITIALIZER;/*! @abstract The sticker size class. */@property (nonatomic, assign, readonly) MSStickerSizeClass stickerSizeClass;/*! @abstract The Sticker Browser View data source. */@property (nonatomic, weak, nullable) id<MSStickerBrowserViewDataSource> dataSource;/*! @abstract Asks the Sticker Browser View to reload its data from its data source. */- (void)reloadData;@end NS_ASSUME_NONNULL_END
//// MSStickerBrowserViewController.h// Messages//// Copyright © 2016 Apple Inc. All rights reserved.//#import <UIKit/UIKit.h>#import <Messages/MSStickerBrowserView.h> NS_ASSUME_NONNULL_BEGIN /*! * @abstract The MSStickerBrowserViewController class creates a controller object that manages a MSStickerBrowserView. */NS_CLASS_AVAILABLE_IOS(10_0)@interface MSStickerBrowserViewController:UIViewController <MSStickerBrowserViewDataSource>/*! @method initWithStickerSizeClass:
@abstract Initializes a MSStickerBrowserViewController and configures it's MSStickerBrowserView with the provided sticker size class. */- (instancetype)initWithStickerSizeClass:(MSStickerSizeClass)sizeClass NS_DESIGNATED_INITIALIZER;/*! @property stickerBrowserView @abstract Returns the sticker browser view managed by the controller object. */@property (nonatomic, strong, readonly) MSStickerBrowserView *stickerBrowserView;/*! * @abstract Controls the size of the stickers are displayed at in the sticker browser view. */@property (nonatomic, readonly) MSStickerSizeClass stickerSizeClass;@end NS_ASSUME_NONNULL_END
//// MSStickerBrowserViewDataSource.h// Messages//// Copyright © 2016 Apple Inc. All rights reserved.//#import <UIKit/UIKit.h> NS_ASSUME_NONNULL_BEGIN @class MSSticker;@class MSStickerBrowserView;/*! * @abstract The MSStickerBrowserViewDataSource protocol declares the methods that the Sticker Browser View uses to access the contents of its data source object. */NS_CLASS_AVAILABLE_IOS(10_0)@protocol MSStickerBrowserViewDataSource <NSObject>/*! * @abstract Returns the number of Stickers that the sticker browser should show. * @param controller The sticker browser view. * @result The numher of stickers.
*/- (NSInteger)numberOfStickersInStickerBrowserView:(MSStickerBrowserView *)stickerBrowserView;/*! * @abstract Returns the sticker that the sticker browser should show in the browser. * @param stickerBrowserView The sticker browser view. * @param index The index of the sticker to show. * @result A MSSticker object. */- (MSSticker *)stickerBrowserView:(MSStickerBrowserView *)stickerBrowserView stickerAtIndex:(NSInteger)index;@end NS_ASSUME_NONNULL_END
//// MSStickerView.h// Messages//// Copyright © 2016 Apple Inc. All rights reserved.//#import <UIKit/UIKit.h> NS_ASSUME_NONNULL_BEGIN @class MSSticker;/*! @class MSStickerView @abstract A UIView subclass that can display sticker assets. @discussion This class is a UIView subclass intended to display stickers. It provides drag and drop functionality so that user may drag the displayed sticker from this view and place it in the Messages transcript. */NS_CLASS_AVAILABLE_IOS(10_0)@interface MSStickerView:UIView /*! @method initWithFrame:sticker:
@abstract Initializes a MSStickerView with a frame and a MSSticker conforming object to display. */- (instancetype)initWithFrame:(CGRect)frame sticker:(nullable MSSticker *)sticker;/*! @property sticker @abstract The MSSticker object to display. @discussion Set this property to nil to remove the current sticker. Setting the sticker property does not change the size of a MSStickerView. Call sizeToFit to adjust the size of the view to match the sticker. */@property (nonatomic, strong, readwrite, nullable) MSSticker *sticker;@end NS_ASSUME_NONNULL_END
(a)用法實例
(i)傳送一簡單訊息
MSConversation* conversation [MSConversation activeConversation]; MSMessage* message = [[MSMessage alloc] init]; message.layout = someMSMessageLayoutConformingObject; message.URL = somePayloadURL; [conversation insertMessage:message localizedChangeDescription:nil completionHandler:^(NSError *error) {// Handle the error.}];
(ii)傳送一工作階段訊息
MSConversation* conversation [MSConversation activeConversation]; MSSession *session = [[conversation selectedMessage] session]; if (session == nil) {session = [[MSSession alloc] init];} MSMessage* message = [[MSMessage alloc] initWithSession:]; message.layout = someMSMessageLayoutConformingObject; message.URL = somePayloadURL; [conversation insertMessage:message localizedChangeDescription:nil completionHandler:^[(NSError *error) { }];
(iii)傳送文字
MSConversation* conversation [MSConversation activeConversation]; NSString *text = @"What's the answer to life the universe and everything?" [conversation insertText:text completionHandler:^(NSError *error) {// Handle the error.}];
(iv)傳送一貼圖
MSConversation* conversation [MSConversation activeConversation];
NSError *error = nil; MSSticker *sticker = [[MSSticker alloc] initWithContentsOfURL:stickerResourceURL localizedDescription:localizedStickerDescription error:&error];if (sticker == nil) {// Handle the error.}[conversation insertSticker:sticker completionHandler:^(NSError *error) {// Handle the error.}];
Claims (19)
- 一種方法,該方法包含:由在一第一裝置上之一第一傳訊應用程式(app)接收來自一第二裝置的一訊息及後設資料,該訊息包括由一第二擴充應用程式建立的內容,該第二擴充應用程式搭配在該第二裝置上之一第二傳訊應用程式操作;在該第一傳訊應用程式中之一訊息文字記錄內的一訊息容器中顯示該內容;接收該訊息容器之一選擇;若一第一擴充應用程式經安裝在該第一裝置上,回應於該選擇而啟動該第一擴充應用程式,藉由在自該第二裝置接收之該後設資料中之一應用程式識別符來識別該第一擴充應用程式以供啟動;在該啟動後,在該第一傳訊應用程式之使用者介面內顯示該第一擴充應用程式之一使用者介面。
- 如請求項1之方法,其中該訊息容器係藉由在該後設資料中之一泡泡識別符所指定的一訊息泡泡,並且該內容與該泡泡識別符相關聯。
- 如請求項2之方法,其中該第一傳訊應用程式及該第二傳訊應用程式各經組態以傳輸短訊息服務(SMS)文字訊息及其他內容,以及在該訊息文字記錄及另一訊息文字記錄中之訊息泡泡中顯示該等文字訊息。
- 如請求項3之方法,其中該第一傳訊應用程式及該第一擴充應用程式經組態以透過程序間通訊(IPC)進行通訊,且該第一傳訊應用程式在一第一沙箱化程序中執行,而該第一擴充應用程式在一第二沙箱化程序中執行,該第二沙箱化程序與該第一沙箱化程序相異。
- 如請求項4之方法,其中在啟動該第一擴充應用程式後,該第一擴充應用程式之該使用者介面取代該第一傳訊應用程式之一螢幕鍵盤。
- 如請求項5之方法,其中在該選擇之前,由該第一傳訊應用程式顯示該內容,而無需啟動或執行該第一擴充應用程式。
- 如請求項6之方法,其中一應用程式設計介面(API)存在於該第一傳訊應用程式與該第一擴充應用程式之間。
- 如請求項7之方法,其中該內容係依一經加密形式予以接收並由該第一傳訊應用程式予以解密,並且透過一IPC傳遞經解密之該形式至該第一擴充應用程式。
- 如請求項8之方法,其中若未安裝該第一擴充應用程式,則該第一傳訊應用程式提議下載及安裝該第一擴充應用程式。
- 如請求項9之方法,其中該第一擴充應用程式修改該內容並透過一IPC傳遞經修改之該內容至該第一傳訊應用程式,以供傳輸至該第二傳訊應用程式用於遞送至該第二裝置上之該第二擴充應用程式。
- 如請求項1之方法,其中該第一擴充應用程式修改該內容並透過一IPC傳遞經修改之該內容至該第一傳訊應用程式,以供傳輸至該第二傳訊應用程式用於遞送至該第二裝置上之該第二擴充應用程式,且其中該第一擴充應用程式接收來自該第一傳訊應用程式之一回呼,該回呼指示該傳輸是否成功。
- 如請求項1之方法,其中該第一擴充應用程式接收該第二裝置之使用者之一模糊識別符,相對於在該第一裝置上之其他擴充應用程式,該模糊識別符對於該第一擴充應用程式係唯一的。
- 如請求項1之方法,其中該第一擴充應用程式經組態以處理由該第二擴充應用程式建立的該內容,且其中該第二擴充應用程式及該第一擴充應用程式各藉由相同應用程式識別符予以識別。
- 如請求項1之方法,其中該第一擴充應用程式透過一應用程式設計介面(API)呼叫該第一傳訊應用程式,以請求變更在該第一傳訊應用程式內之該擴充應用程式之檢視。
- 如請求項14之方法,其中該第一擴充應用程式要求下列之至少一變更:(a)自一精簡檢視切換至一展開檢視,該精簡檢視取代該傳訊應用程式之一螢幕鍵盤;或(b)自該展開檢視切換至該精簡檢視;或(c)解除該擴充應用程式之檢視。
- 如請求項15之方法,其中當顯示該第一擴充應用程式之該精簡檢視時,該第一傳訊應用程式之該訊息文字記錄係可檢視。
- 一種裝置,該裝置包含:至少一處理器;及一記憶體,其包括指令,該等指令由該至少一處理器執行時致使該至少一處理器:由一第一裝置上之一第一傳訊應用程式(app)接收來自一第二裝置的一訊息及相關聯之後設資料,該訊息包括由一第二擴充應用程式建立的內容,該第二擴充應用程式搭配該第二裝置上之一第二傳訊應用程式操作,該第一傳訊應用程式及該第二傳訊應用程式各經組態以傳輸短訊息服務(SMS)文字訊息及其他內容,以及在一訊息文字記錄中顯示該等文字訊息;在該第一傳訊應用程式之一使用者介面檢視中的一訊息文字記錄中顯示該內容;自該第一傳訊應用程式傳達該內容至藉由在自該第二裝置接收之該後設資料中之一應用程式識別符所識別之一第一擴充應用程式,透過一程序間通訊(IPC)自在一第一程序中執行的該第一傳訊應用程式傳達該內容至在一第二程序中執行的該第一擴充應用程式,該第二程序與該第一程序相異;在該第一傳訊應用程式的該使用者介面內顯示該第一擴充應用程式之一使用者介面。
- 一種非暫時性機器可讀媒體,其儲存可執行之程式指令,該等可執行之程式指令由一資料處理系統執行時致使該資料處理系統實行一方法,該方法包含:由在一第一程序中執行之一擴充應用程式建立顯示在由在一第一裝置上之一第一傳訊應用程式裝載(hosted)的一檢視內的內容,該第一傳訊應用程式在一第二程序中執行,該第二程序與該第一程序相異,回應於致使該內容被傳送至一第二裝置的一第二命令之一選擇,透過一程序間通訊自該擴充應用程式傳達該內容至該第一傳訊應用程式;由該第一傳訊應用程式從關於該第二裝置之資料判定該第二裝置上之一第二傳訊應用程式不相容於該擴充應用程式;由該第一傳訊應用程式傳送替代內容至該第二傳訊應用程式。
- 一種由如請求項18之資料處理系統實行之方法。
Applications Claiming Priority (8)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662349101P | 2016-06-12 | 2016-06-12 | |
US201662349113P | 2016-06-12 | 2016-06-12 | |
US201662349091P | 2016-06-12 | 2016-06-12 | |
US62/349,101 | 2016-06-12 | ||
US62/349,113 | 2016-06-12 | ||
US62/349,091 | 2016-06-12 | ||
US15/275,136 US10505872B2 (en) | 2016-06-12 | 2016-09-23 | Messaging application interacting with one or more extension applications |
US15/275,136 | 2016-09-23 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201743207A TW201743207A (zh) | 2017-12-16 |
TWI641994B true TWI641994B (zh) | 2018-11-21 |
Family
ID=59077818
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106118509A TWI641994B (zh) | 2016-06-12 | 2017-06-05 | 用於與一或多個擴充應用程式互動之傳訊應用程式之方法、裝置及非暫時性機器可讀媒體 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10505872B2 (zh) |
EP (2) | EP3255909B1 (zh) |
KR (3) | KR101921144B1 (zh) |
CN (2) | CN113254121A (zh) |
TW (1) | TWI641994B (zh) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102174346B1 (ko) | 2015-12-21 | 2020-11-04 | 구글 엘엘씨 | 메시징 애플리케이션들을 위한 자동적인 제안들 및 다른 콘텐츠 |
US10530723B2 (en) | 2015-12-21 | 2020-01-07 | Google Llc | Automatic suggestions for message exchange threads |
US10595169B2 (en) | 2016-06-12 | 2020-03-17 | Apple Inc. | Message extension app store |
US10852912B2 (en) | 2016-06-12 | 2020-12-01 | Apple Inc. | Image creation app in messaging app |
US10785175B2 (en) | 2016-06-12 | 2020-09-22 | Apple Inc. | Polling extension application for interacting with a messaging application |
DE112017003594T5 (de) | 2016-09-20 | 2019-04-25 | Google Llc | Bot, der Genehmigung zum Zugriff auf Daten anfordert |
WO2018057541A1 (en) | 2016-09-20 | 2018-03-29 | Google Llc | Suggested responses based on message stickers |
US10860854B2 (en) | 2017-05-16 | 2020-12-08 | Google Llc | Suggested actions for images |
US10827319B2 (en) | 2017-06-02 | 2020-11-03 | Apple Inc. | Messaging system interacting with dynamic extension app |
US10404636B2 (en) * | 2017-06-15 | 2019-09-03 | Google Llc | Embedded programs and interfaces for chat conversations |
US10348658B2 (en) | 2017-06-15 | 2019-07-09 | Google Llc | Suggested items for use with embedded applications in chat conversations |
US10891526B2 (en) | 2017-12-22 | 2021-01-12 | Google Llc | Functional image archiving |
US11062030B2 (en) * | 2018-03-09 | 2021-07-13 | Huawei Technologies Co., Ltd. | Systems and methods for managing access control between processes in a computing device |
CN112445349A (zh) * | 2019-09-05 | 2021-03-05 | 北京搜狗科技发展有限公司 | 一种输入方法、装置和电子设备 |
US11252274B2 (en) * | 2019-09-30 | 2022-02-15 | Snap Inc. | Messaging application sticker extensions |
US11086605B1 (en) * | 2020-03-26 | 2021-08-10 | Red Hat, Inc. | Processing portable extensions at build time |
US11356392B2 (en) * | 2020-06-10 | 2022-06-07 | Snap Inc. | Messaging system including an external-resource dock and drawer |
US11583779B2 (en) * | 2020-06-10 | 2023-02-21 | Snap Inc. | Message interface expansion system |
KR20220012599A (ko) * | 2020-07-23 | 2022-02-04 | 삼성전자주식회사 | 전자 장치에서 키패드를 이용한 컨텐츠 검색을 제공하는 방법 및 장치 |
WO2022055538A1 (en) * | 2020-09-09 | 2022-03-17 | Google Llc | Pre-launching an application using interprocess communication |
CN114168115B (zh) * | 2020-09-10 | 2022-11-08 | 荣耀终端有限公司 | 通信系统、应用下载方法及设备 |
KR102354741B1 (ko) * | 2021-05-27 | 2022-01-24 | 주식회사 디어유 | 개인화 메시징 서비스 시스템 및 개인화 메시징 서비스 방법 |
TWI791316B (zh) * | 2021-11-05 | 2023-02-01 | 財團法人工業技術研究院 | 實現程式間通訊的方法及系統 |
WO2024205430A1 (en) * | 2023-03-30 | 2024-10-03 | Paywage Phil Inc | Automated real-time role-based dynamic transaction interfaces |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070244980A1 (en) * | 2006-04-14 | 2007-10-18 | Microsoft Corporation | Instant Messaging Plug-Ins |
TW200943786A (en) * | 2008-01-04 | 2009-10-16 | Nokia Corp | System and method for binding notification types to applications for a notification framework |
WO2015162072A2 (en) * | 2014-04-24 | 2015-10-29 | Barclays Bank Plc | Instant messaging systems and methods |
WO2015183456A1 (en) * | 2014-05-29 | 2015-12-03 | Apple Inc. | Consistent extension points to allow an extension to extend functionality of an application to another application |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7669134B1 (en) | 2003-05-02 | 2010-02-23 | Apple Inc. | Method and apparatus for displaying information during an instant messaging session |
US7421501B2 (en) * | 2005-02-04 | 2008-09-02 | Microsoft Corporation | Queued sessions for communicating correlated messages over a network |
US8583149B2 (en) | 2010-04-07 | 2013-11-12 | Apple Inc. | Registering email addresses for online communication sessions |
EP2710765B1 (en) * | 2011-05-19 | 2019-04-10 | BlackBerry Limited | System and method for associating information with a contact profile on an electronic communication device |
US8751800B1 (en) * | 2011-12-12 | 2014-06-10 | Google Inc. | DRM provider interoperability |
US9454349B2 (en) * | 2011-12-20 | 2016-09-27 | Microsoft Technology Licensing, Llc | User interface placeholders for application extensions |
US9886173B2 (en) * | 2013-03-15 | 2018-02-06 | Ambient Consulting, LLC | Content presentation and augmentation system and method |
US9626365B2 (en) * | 2013-03-15 | 2017-04-18 | Ambient Consulting, LLC | Content clustering system and method |
US10365797B2 (en) * | 2013-03-15 | 2019-07-30 | Ambient Consulting, LLC | Group membership content presentation and augmentation system and method |
US9460057B2 (en) * | 2013-03-15 | 2016-10-04 | Filmstrip, Inc. | Theme-based media content generation system and method |
US9894022B2 (en) * | 2013-07-19 | 2018-02-13 | Ambient Consulting, LLC | Image with audio conversation system and method |
US9977591B2 (en) * | 2013-10-01 | 2018-05-22 | Ambient Consulting, LLC | Image with audio conversation system and method |
WO2015050966A1 (en) * | 2013-10-01 | 2015-04-09 | Filmstrip, Inc. | Image and message integration system and method |
US10057731B2 (en) * | 2013-10-01 | 2018-08-21 | Ambient Consulting, LLC | Image and message integration system and method |
KR102161764B1 (ko) | 2013-10-31 | 2020-10-05 | 삼성전자주식회사 | 카툰 이미지를 이용한 메신저 대화창 표시 방법 및 컴퓨터 판독 가능한 기록 매체 |
WO2015134952A1 (en) | 2014-03-07 | 2015-09-11 | Peterson Maci | Systems and methods for controlling personal communications |
CN105005457B (zh) | 2014-04-25 | 2019-04-09 | 腾讯科技(深圳)有限公司 | 地理位置展示方法及装置 |
US9563488B2 (en) | 2014-05-29 | 2017-02-07 | Apple Inc. | Sharing extension points to allow an application to share content via a sharing extension |
US10445396B2 (en) * | 2014-05-31 | 2019-10-15 | Apple Inc. | Device, method, and graphical user interface for extending functionality of a host application to another application |
US11057325B2 (en) | 2014-09-24 | 2021-07-06 | Zoho Corporation Private Limited | Methods and apparatus for enhanced communication in email applications |
WO2016061359A1 (en) | 2014-10-15 | 2016-04-21 | Liveperson, Inc. | System and method for interactive application preview |
US11025569B2 (en) | 2015-09-30 | 2021-06-01 | Apple Inc. | Shared content presentation with integrated messaging |
-
2016
- 2016-09-23 US US15/275,136 patent/US10505872B2/en active Active
-
2017
- 2017-06-05 TW TW106118509A patent/TWI641994B/zh active
- 2017-06-08 EP EP17174969.0A patent/EP3255909B1/en active Active
- 2017-06-08 EP EP20170655.3A patent/EP3700237A1/en active Pending
- 2017-06-08 KR KR1020170071462A patent/KR101921144B1/ko active IP Right Grant
- 2017-06-12 CN CN202110381708.6A patent/CN113254121A/zh active Pending
- 2017-06-12 CN CN201710435784.4A patent/CN107491296B/zh active Active
-
2018
- 2018-11-15 KR KR1020180140444A patent/KR102033672B1/ko active IP Right Grant
-
2019
- 2019-10-11 KR KR1020190126212A patent/KR102159885B1/ko active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070244980A1 (en) * | 2006-04-14 | 2007-10-18 | Microsoft Corporation | Instant Messaging Plug-Ins |
TW200943786A (en) * | 2008-01-04 | 2009-10-16 | Nokia Corp | System and method for binding notification types to applications for a notification framework |
WO2015162072A2 (en) * | 2014-04-24 | 2015-10-29 | Barclays Bank Plc | Instant messaging systems and methods |
WO2015183456A1 (en) * | 2014-05-29 | 2015-12-03 | Apple Inc. | Consistent extension points to allow an extension to extend functionality of an application to another application |
Also Published As
Publication number | Publication date |
---|---|
US10505872B2 (en) | 2019-12-10 |
KR102033672B1 (ko) | 2019-10-18 |
KR20190119017A (ko) | 2019-10-21 |
CN107491296B (zh) | 2021-04-02 |
CN113254121A (zh) | 2021-08-13 |
KR102159885B1 (ko) | 2020-09-24 |
TW201743207A (zh) | 2017-12-16 |
KR20170140091A (ko) | 2017-12-20 |
KR20180125422A (ko) | 2018-11-23 |
CN107491296A (zh) | 2017-12-19 |
EP3255909A1 (en) | 2017-12-13 |
KR101921144B1 (ko) | 2018-11-23 |
EP3700237A1 (en) | 2020-08-26 |
EP3255909B1 (en) | 2020-04-22 |
US20170359279A1 (en) | 2017-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI641994B (zh) | 用於與一或多個擴充應用程式互動之傳訊應用程式之方法、裝置及非暫時性機器可讀媒體 | |
TWI679873B (zh) | 訊息擴充應用程式商店 | |
US10534533B2 (en) | Messaging sticker applications | |
US11601385B2 (en) | Conversion of text relating to media content and media extension apps | |
US10852912B2 (en) | Image creation app in messaging app | |
US10194288B2 (en) | Sticker distribution system for messaging apps | |
US10554599B2 (en) | Conversion of detected URL in text message | |
US10785175B2 (en) | Polling extension application for interacting with a messaging application | |
US10368208B2 (en) | Layers in messaging applications |