I've got the sample-BitcoinWallet code from your repository working with multichain protocol after changes made to the handshaking.

The wallet is able to receive native currency and all transfers are smooth and working as expected. To make this useful for the community and everyone around (I'm planning to opensource), what changes do I need to make so that the wallet is also able to receive native assets and display it as well. Any documentation available on this?

Unfortunately there is currently no provision in the peer-to-peer protocol for getting the asset name based on the first 16 bytes of the txid. However if the lightweight wallet is given the issuance transaction (in which the asset name is set) from an untrusted source, it can independently confirm that this is the true asset name. To do this it would calcualte the transaction's hash and compare the first 16 bytes against those which appear in the UTXO's OP_DROP metadata.

There's no need to add any special metadata in the input, but yes you do need to include the asset info in the outputs using OP_DROPs. Without this, the asset quantities won't balance between the outputs spent by the transaction, and the outputs created by it.