Closed Bug 887534 Opened 11 years ago Closed 11 years ago

[User Story] Send contact as a VCARD via bluetooth

Categories

(Firefox OS Graveyard :: Gaia::Contacts, defect)

x86
macOS
defect
Not set
normal

Tracking

(blocking-b2g:koi+, b2g-v1.2 fixed)

RESOLVED FIXED
blocking-b2g koi+
Tracking Status
b2g-v1.2 --- fixed

People

(Reporter: wmathanaraj, Assigned: fcampo)

References

Details

(Keywords: feature, Whiteboard: [TEF][UCID:Comms3, FT:comms, KOI:P1], [u=commsapps-user c=contacts p=4][Sprint 4])

Attachments

(2 files, 1 obsolete file)

User Story:

As a user I want to select a contact from the contact list and send to another device that is already paired via Bluetooth with the sending device.
As the sender if bluetooth is not switched on I want to be informed and given the option to switch on bluetooth on the device. After switching on bluetooh, I want to automatically return to the contact sending process.
As the sender, if I am not already paired with the receiving device, I want to be given the opportunity to pair. After pairing, I want to automatically return to the contact sending process.

Preconditions:

* Contact app is open
* Sending and receiving devices have BT capability 

Acceptance Criteria:

* user is informed of successful sending of contact
* any sending failure is presented to the user in a comprehensible message
On the sender side's Contact app

 - pair phone with receiver device, if necessary;
 - create a file (extension is .vcf) with the VCARD data;
 - send the VCARD file to the paired receiver; and
 - display success or error message.

There should already be example code for some of these steps in the Music app.

See bug 887663 for the receiver side.
Adding also Sergi Mansilla, as he has been working on the current import from vcard.
A Pivotal Tracker story has been created for this Bug: http://www.pivotaltracker.com/story/show/52538267
David Scravaglieri deleted the linked story in Pivotal Tracker
Depends on: 889304
We have already had a centralized app in charge of Bluetooth file transferring. Any application which wants to send a file via Bluetooth can simply communicate with that app via mozActivity named 'share'. Please see https://github.com/mozilla-b2g/gaia/blob/master/apps/gallery/js/gallery.js#L1066 for more information.
Whiteboard: [ucid:Comms3] → [ucid:Comms3], [u=commsapps-user c=contacts p=0]
listed as must have in v1.2 for COMM team. koi+
blocking-b2g: --- → koi+
Flags: in-moztrap?
MozTrap #9045
Flags: in-moztrap? → in-moztrap+
There is a second way to transfer business cards between phones.

The Bluetooth Object Push Profile has built-in support for transferring vCards. We'd need to extend our support for OPP to use this facility, but that shouldn't be much work. See [1], Section 3 and 4. This will probably be compatible with a lot of phones, so I more and more think that using OPP is the better approach.

[1] https://www.bluetooth.org/docman/handlers/downloaddoc.ashx?doc_id=230913
But then again, this spec reads like it'd only support transferring a 'default business card' of the phone's owner.

Eric, could you have a look at the OPP spec and give your opinion? Do you think it is generic enough for our purposes?
Flags: needinfo?(echou)
(In reply to Thomas Zimmermann [:tzimmermann] [:tdz] from comment #8)
> There is a second way to transfer business cards between phones.
> 
> The Bluetooth Object Push Profile has built-in support for transferring
> vCards. We'd need to extend our support for OPP to use this facility, but
> that shouldn't be much work. See [1], Section 3 and 4. This will probably be
> compatible with a lot of phones, so I more and more think that using OPP is
> the better approach.
> 
> [1] https://www.bluetooth.org/docman/handlers/downloaddoc.ashx?doc_id=230913

I think we should open a different bug for that feature you comment Thomas. Which will require setting up a default identify for the phone, something that we don't have so far.

Also from doing this we were thinking about web activities as well, sending a single vcard file containing the desired contacts to export.

Cheers,
F.
This spec is very much focused on owner's business card rather than sending any contact as vcard to another device.
Hi Thomas,

There are 3 features defined in OPP spec:

(1) Object Push
(2) Business Card Pull
(3) Business Card Exchange Feature

In this bug, we are asked to support "sending(push) a contact from the contact list to the remote device via Bluetooth". To achieve this, all we need is (1).

We can see the vCard file exported from Contacts app as a common 'object'. Apparently feature (2) is not we are looking for. As for feature (3), it's like two people exchanging their business cards. However, it's not what we want. What we want is to let the user be able to select an arbitrary contact from Contact app and send to a paired Bluetooth device, just like Wilfred mentioned in comment 11. Moreover, feature (1) can be also used on sharing the owner's business card to any paired Bluetooth device. That's why I said that Gecko Bluetooth is ready for this user story.
Flags: needinfo?(echou)
Whiteboard: [ucid:Comms3], [u=commsapps-user c=contacts p=0] → [ucid:Comms3 KOI:P1], [u=commsapps-user c=contacts p=0]
Assignee: nobody → noef
Whiteboard: [ucid:Comms3 KOI:P1], [u=commsapps-user c=contacts p=0] → [UCID:Comms3, FT:comms, KOI:P1], [u=commsapps-user c=contacts p=0]
Assignee: noef → nobody
Whiteboard: [UCID:Comms3, FT:comms, KOI:P1], [u=commsapps-user c=contacts p=0] → [TEF][UCID:Comms3, FT:comms, KOI:P1], [u=commsapps-user c=contacts p=0]
Whiteboard: [TEF][UCID:Comms3, FT:comms, KOI:P1], [u=commsapps-user c=contacts p=0] → [TEF][UCID:Comms3, FT:comms, KOI:P1], [u=commsapps-user c=contacts p=0][Sprint 2]
Attached file FFOS_ContactsExport_20130801_V1.0.pdf (obsolete) —
Wireframe release:

__RELEASE NOTE__

new wireframes
- none

updated wireframes
- none

deleted wireframes
- none

new flows
- Send via Bluetooth : Single VCard
- Send via Bluetooth : Multiple VCards
- Receive via Bluetooth : VCard

updated flows
- none

deleted flows
- none
Depends on: 901471
Hi Ayman,

I have a suggestion about the flow. When the user has done choosing the contact he wants to share and is going to select a Bluetooth device, it doesn't always need to search nearby devices and go through the pairing process. Just like Settings app, there should be another area called 'Paired Devices' for users to select paired devices. 

Hope this will help.

Eric
pages 5 to 7 of this wireframe pack are relevant to this bug

Wireframe pack V2.0 release note:

updated flows

Send via Bluetooth : Single VCard
- step 3 removed
- FB statement added to step 2
- SIM and Vcard CTAs added to step 2

Send via Bluetooth : Multiple VCards
- step 4 removed
- FB statement added to step 3
- spinner added between selection of export cta and export process beginning
Attachment #784939 - Attachment is obsolete: true
Please find all visuals required for this implementation in the following link:
For Single VCard: https://www.dropbox.com/sh/bkvv86ad8ed5ugi/kJTR61A1fO

for Multiple VCard: https://www.dropbox.com/sh/1yv2pqfnaugiioc/UeMT8eHrA3

If you have any question, please do not hesitate.
Victoria
Working on defining the test cases
Assignee: nobody → isabelrios
Whiteboard: [TEF][UCID:Comms3, FT:comms, KOI:P1], [u=commsapps-user c=contacts p=0][Sprint 2] → [TEF][UCID:Comms3, FT:comms, KOI:P1], [u=commsapps-user c=contacts p=0][Sprint 3]
Assignee: isabelrios → fernando.campo
Depends on: 896982
Updating the estimated time for the bug. As it implies new UX and processes, I don't expect to finish it before middle next week.
Whiteboard: [TEF][UCID:Comms3, FT:comms, KOI:P1], [u=commsapps-user c=contacts p=0][Sprint 3] → [TEF][UCID:Comms3, FT:comms, KOI:P1], [u=commsapps-user c=contacts p=4][Sprint 3]
Per comment 18 moving to Sprint 4.
Whiteboard: [TEF][UCID:Comms3, FT:comms, KOI:P1], [u=commsapps-user c=contacts p=4][Sprint 3] → [TEF][UCID:Comms3, FT:comms, KOI:P1], [u=commsapps-user c=contacts p=4][Sprint 4]
We've seen that we will need to create a temporary file on the sdcard to send that file through bluetooth.

There is a bug already for avoiding this:

https://bugzilla.mozilla.org/show_bug.cgi?id=821186

Meanwhile we will work around the problem creating that temporary file until this is solved and we can send directly the blob.

Thanks,
F.
Ayman/Carrie, 

Regarding contacts over Bluetooh, contacts should be sent via the Bluetooth file transfer app and therefore the flow will be the same as Bug 892212 - [B2G] [BT USer Story]: Support for BT inline pairing User

Regarding the inline paring UX, base on BT team's discussion, in order to close this story before v1.2 feature complete date, Carrie's original proposal is considered as the most feasible one for eng. "auto-pairing" in Ayman's proposal is not likely to make it before v1.2 feature closes.

For v1.2, let's proceed with providing a comparatively better UX by adding a few missing pieces base on the current flows (Carrie's original proposal) while you can continue discussing future improvements on this.

Hopefully this sound like a reasonable path forward. thanks
(In reply to Joe Cheng [:jcheng] from comment #21)
> Ayman/Carrie, 
> 
> Regarding contacts over Bluetooh, contacts should be sent via the Bluetooth
> file transfer app and therefore the flow will be the same as Bug 892212 -
> [B2G] [BT USer Story]: Support for BT inline pairing User
> 
After checking the bug out, I reckon that the flow would work properly when we want to export one contact
Contact list > Choose a contact > On contact details, choose export > check BT > pair > send.

But AFAIK, this won't work when exporting from Settings (possibility of exporting multiple contacts), where the flow is:
Contact Settings > export > bluetooth > (should check if bt is on, and give option to turn on if not) > pair with device > choose contacts from the list > send
...as the current activity 'share' for bluetooth requires the data before checking if the bluetooth is connected.

One solution for this would be create another activity for bluetooth where we just check the availability of the bluetooth, and if is off we can let the user turn it on. That would help with the flow for multiple contact export that Ayman proposes.

I'd like to hear your opinions, and if agree, maybe Joe can put me in contact with BT team to discuss the activity
Sorry for that, my mind is asleep today......Forgot to say, another option is modify the flow so first we choose contacts from the list and THEN check for BT availability and pairing. This can be the functionality for 1.2 (much easier with current code), and maybe add the new activity for v1.3 ?
Joe, could you please include the right people from BT team in this thread?. Asking also Ayman for UX POV.
Flags: needinfo?(jcheng)
Flags: needinfo?(aymanmaat)
Hi Noemi, 

(In reply to Noemí Freire (:noemi) from comment #24)
> Joe, could you please include the right people from BT team in this thread?.
> Asking also Ayman for UX POV.

I'm in charge of Gecko Bluetooth development. I've been watching this bug since it was created, and I'll provide as much information as I can if necessary. Also, cc Ian, the owner of Gaia::Bluetooth File Transfer, to see if we will really hit the problem mentioned by Fernando in comment 22.
Flags: needinfo?(jcheng)
Depends on: 905606
Just adding bug 905606 dependency since in case of unpaired devices we need the activity returning to the export screen.
As the bug 914112 has been closed as duplicate, updating the origin
Depends on: 910140
No longer depends on: 914112
Hi all,

Bug 905606 is in reviewing stage. After bug 905606 is landed, Bluetooth file transfer is ready to support inline pairing during sending files. So, I go through "FFOS_ContactsV1.2_20130805_V2.0.pdf" again, we have ability to meet the flow in "Send via Bluetooth "Single VCard" case. As long as Contacts::Export_Via_Bluetooth request 'share' activity with blob(package VCards in blob), Bluetooth File Transfer should be able to send the file out to a paired/unpaired device. If the device is unpaired, we're able to browse it in device list. After a user tapped the unpaired devices, Bluetooth File Transfer app will send the file while unpaired device is changed the state into paired. Please reference the spec. (https://bugzilla.mozilla.org/show_bug.cgi?id=892212#c13).

According to the spec. here, there are two things that can not be done yet.

* Send via Bluetooth : Multiple VCards : Step7, Page7
Once a user finished inline pairing in Bluetooth File Transfer app, we will send the files immediately. The step 7 "List of contacts" means that a user have ability to go back contacts app for picking contacts. Then, a user completed picking contacts to send file(VCard). The behavior is strange, and will make Bluetooth File Transfer program be interrupted in a "share" activity request.

* Notifications tray/overlay:
For such more information of transferring progress in detail, we'll need to have feasibility study for planing the implementation.

Thanks.
Just met Francisco and Fernando in workweek yesterday. They have already had a branch which is for exporting multiple contacts in a VCard via Bluetooth, but we faced different problems when we use different devices as receiving devices:

Case 1: The receiving side is a B2G device
Although the VCard transferring procedure could complete without any errors, when we tried to import VCard from the receiving side, an error screen "Can not open unknown media type" popped up.

Case 2: The receiving side is NOT a B2G device (e.g. HTC Sensation XL)
The receiving device would turn down the sending request immediately because the filename we sent has no extension.

I think both issues could be fixed from Gecko. I'll file another bug once I figure out the whole picture of the problem.
Flags: needinfo?(aymanmaat)
Removing Ayman ni since the BT flow for v1.2 has been clarified with BT team for v1.2 and a new discussion has been opened for v1.3.
Attached file link to PR
Attachment #806049 - Flags: review?(fbsc)
Attachment #806049 - Flags: review?(fbsc) → review+
merged on master (failing tests were unrelated): 53a8671f00abf23c637578becaf17e296515c02c

thanks to all for the help, specially Francisco for coding and Borja for big review.
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → FIXED
Uplifted 53a8671f00abf23c637578becaf17e296515c02c to:
v1.2: 4d3cb5d0c9a491147c7ac7ce527bc7ebdc0ab31e
Attachment mime type: text/plain → text/x-github-pull-request
See Also: → 962707
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: