Mengintegrasikan dan bekerja dengan pass .pkpass di aplikasi Android Xamarin

Saya sedang mengembangkan aplikasi Android Xamarin dan saya memerlukan kemampuan untuk dapat bekerja dengan Passes (misalnya PassKit (JSON)). Saya harus dapat membuat daftar semua pass di ListVew dan dapat membuka serta menampilkan pass tersebut. Juga dapat menyimpannya ke dompet seperti PassWallet atau Pass2u. Saya tidak memerlukan kemampuan untuk membuatnya, cukup melihatnya, dan menyimpannya ke dompet atau membuangnya.

Tampaknya ada contoh aplikasi Xamarin iOS yang melakukan persis apa yang saya perlukan di sini tetapi tentu saja saya harus bisa melakukan ini di Xamarin Android.

Saya telah meneliti ini selama berjam-jam tetapi tidak tahu bagaimana mencapai apa yang saya butuhkan. JSON.net sepertinya cara yang tepat untuk membaca passnya, tapi sejauh itulah yang berhasil saya dapatkan. Beberapa contoh akan sangat bagus. Adakah yang bisa membantu?


person Can'tCodeWon'tCode    schedule 11.08.2014    source sumber


Jawaban (1)


Untuk menambahkan pass ke PassWallet Anda dapat menggunakan yang berikut ini:

private static boolean launchPassWallet(Context applicationContext, Uri uri, boolean launchGooglePlay) {
    if (null != applicationContext) {
        PackageManager packageManager = applicationContext.getPackageManager();
        if (null != packageManager) {
            final String strPackageName = "com.attidomobile.passwallet";
            Intent startIntent = new Intent();
            startIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startIntent.setAction(Intent.ACTION_VIEW);
            Intent passWalletLaunchIntent = packageManager
                    .getLaunchIntentForPackage(strPackageName);
            if (null == passWalletLaunchIntent) {
                // PassWallet isn't installed, open Google Play:
                if (launchGooglePlay) {

                    String strReferrer = "";

                    try {
                        strReferrer = "&referrer=" + URLEncoder.encode(uri.toString(), "UTF-8");
                    } catch (UnsupportedEncodingException e) {
                        e.printStackTrace();
                        strReferrer = "";
                    }

                    try {
                        startIntent.setData(Uri.parse("market://details?id=" + strPackageName + strReferrer));
                        applicationContext.startActivity(startIntent);
                    } catch (android.content.ActivityNotFoundException anfe) {
                        // Google Play not installed, open via website
                        startIntent.setData(Uri.parse("http://play.google.com/store/apps/details?id=" + strPackageName + strReferrer));
                        applicationContext.startActivity(startIntent);
                    }
                }
            } else {

                final String strClassName = "com.attidomobile.passwallet.activity.TicketDetailActivity";
                startIntent.setClassName(strPackageName, strClassName);
                startIntent.addCategory(Intent.CATEGORY_BROWSABLE);
                startIntent.setDataAndType(uri, "application/vnd.apple.pkpass");

                applicationContext.startActivity(startIntent);

                return true;
            }
        }
    }
    return false;
}

Dan contoh panggilannya adalah:

launchPassWallet(getApplicationContext(),Uri.parse("http://test.attidomobile.com/PassWallet/Passes/AttidoMobile.pkpass"), true); 

Anda juga dapat menggunakan file:// URL jika Anda memiliki file secara lokal.

Untuk menampilkannya dalam daftar, Anda perlu mengekstrak file .pkpass dan kemudian mengurai JSON untuk bidang yang relevan.

person Andy Nugent    schedule 25.09.2014
comment
Dan pertanyaannya: bagaimana cara menambahkan daftar pass? Sekarang hanya dapat menambahkan 1 pass per 1 kali. - person RoShan Shan; 25.01.2017