登录 <Button android:id="@+id/bt_1" android:text="静默登录" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Button android:id="@+id/bt_2" android:text="ID登录" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Button android:id="@+id/bt_3" android:text="Code登录" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Button android:id="@+id/bt_4" android:text="获取Token" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Button android:id="@+id/bt_5" android:text="主题订阅" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Button android:id="@+id/bt_6" android:text="取消订阅" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Button android:id="@+id/bt_7" android:text="检查IAP" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Button android:id="@+id/bt_8" android:text="展示商品" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Button android:id="@+id/bt_9" android:text="购买商品" android:layout_width="wrap_content" android:layout_height="wrap_content"/>
MainActivity
public class MainActivity extends AppCompatActivity { private Button bt1; private static final String TAG = "MainActivity"; private Button bt2; private AccountAuthParams authParams; private AccountAuthService service; private Button bt3; private Button bt4; private Button bt5; private Button bt6; private Button bt7; private Button bt8; private Button bt9; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { bt1 = findViewById(R.id.bt_1); bt1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { signlnCode();//查询你上过一次的登录信息 } }); bt2 = findViewById(R.id.bt_2); bt2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { idTokenLogin();//idToken登录 } }); bt3 = findViewById(R.id.bt_3); bt3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { CodeLogin(); } }); bt4 = findViewById(R.id.bt_4); bt4.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { getToken(); } }); bt5 = findViewById(R.id.bt_5); bt5.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { MyHmsMessageService.subscribe(MainActivity.this); } }); bt6 = findViewById(R.id.bt_6); bt6.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { MyHmsMessageService.unsubscribe(MainActivity.this); } }); bt7 = findViewById(R.id.bt_7); bt7.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { getIAP(); } }); bt8 = findViewById(R.id.bt_8); bt8.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { showProduct(); } }); bt9 = findViewById(R.id.bt_9); bt9.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { goBuyProduct(); } }); } public void signlnCode() { authParams = new AccountAuthParamsHelper(AccountAuthParams.DEFAULT_AUTH_REQUEST_PARAM) .setProfile() .setAuthorizationCode() .createParams(); service = AccountAuthManager.getService(this, authParams); Task<AuthAccount> task = service.silentSignIn(); task.addOnCompleteListener(new OnCompleteListener<AuthAccount>() { @Override public void onComplete(Task<AuthAccount> task) { if (task.isSuccessful()) { Log.i(TAG, "display name: " + task.getResult().getDisplayName()); } else { Log.e(TAG, task.getException().getMessage()); } } }); } private void idTokenLogin() { authParams = new AccountAuthParamsHelper(AccountAuthParams.DEFAULT_AUTH_REQUEST_PARAM) .setIdToken().createParams(); service = AccountAuthManager.getService(MainActivity.this, authParams); startActivityForResult(service.getSignInIntent(), 0); } private void CodeLogin() { authParams = new AccountAuthParamsHelper(AccountAuthParams.DEFAULT_AUTH_REQUEST_PARAM) .setProfile() .setAuthorizationCode() .createParams(); service = AccountAuthManager.getService(this, authParams); startActivityForResult(service.getSignInIntent(), 0); } private void getToken() { new Thread() { @Override public void run() { try { String appId = AGConnectServicesConfig.fromContext(MainActivity.this).getString("client/app_id"); String token = HmsInstanceId.getInstance(MainActivity.this).getToken(appId, "HCM"); Log.i(TAG, "run: ==================" + token); } catch (ApiException e) { e.printStackTrace(); } } }.start(); } private void getIAP() { Task<IsEnvReadyResult> envReady = Iap.getIapClient(this).isEnvReady(); envReady.addOnCompleteListener(new OnCompleteListener<IsEnvReadyResult>() { @Override public void onComplete(Task<IsEnvReadyResult> task) { if (task.isSuccessful()) { Log.i(TAG, "onComplete: IAP成功"); } } }); } private void showProduct() { List<String> list = new ArrayList<>(); list.add("qq"); ProductInfoReq req = new ProductInfoReq(); req.setPriceType(1); req.setProductIds(list); Task<ProductInfoResult> spTask = Iap.getIapClient(MainActivity.this).obtainProductInfo(req); spTask.addOnCompleteListener(new OnCompleteListener<ProductInfoResult>() { @Override public void onComplete(Task<ProductInfoResult> task) { if (task.isSuccessful()) { for (ProductInfo productInfo : task.getResult().getProductInfoList()) { Log.i(TAG, "name: "+productInfo.getProductName()); Log.i(TAG, "desc: "+productInfo.getProductDesc()); } } else { Log.e(TAG, task.getException().getMessage()); } } }); } private void goBuyProduct(){ PurchaseIntentReq req=new PurchaseIntentReq(); req.setPriceType(1); req.setProductId("qq"); Task<PurchaseIntentResult> purchaseIntent = Iap.getIapClient(MainActivity.this).createPurchaseIntent(req); purchaseIntent.addOnCompleteListener(new OnCompleteListener<PurchaseIntentResult>() { @Override public void onComplete(Task<PurchaseIntentResult> task) { if (task.isSuccessful()){ Status status = task.getResult().getStatus(); try { status.startResolutionForResult(MainActivity.this,0); } catch (IntentSender.SendIntentException e) { e.printStackTrace(); } }else { Log.i(TAG, "onComplete: 失败!!!!!!"); } } }); }
MyHmsMessageService
public class MyHmsMessageService extends HmsMessageService { private static final String TAG = "MyHmsMessageService"; @Override public void onMessageReceived(RemoteMessage remoteMessage) { Map<String, String> dataOfMap = remoteMessage.getDataOfMap(); Log.i(TAG, "onMessageReceived: "+dataOfMap.get("name")); } public static void subscribe(Context context){ Task<Void> task = HmsMessaging.getInstance(context).subscribe("aa"); task.addOnSuccessListener(new OnSuccessListener<Void>() { @Override public void onSuccess(Void aVoid) { Log.i(TAG, "onSuccess: 主题订阅成功"); } }).addOnFailureListener(new OnFailureListener() { @Override public void onFailure(Exception e) { Log.i(TAG, "onFailure: 主题订阅失败"); } }); } //主题退订 public static void unsubscribe(Context context){ Task<Void> task = HmsMessaging.getInstance(context).unsubscribe("aa"); task.addOnSuccessListener(new OnSuccessListener<Void>() { @Override public void onSuccess(Void aVoid) { Log.i(TAG, "onSuccess: 主题取消订阅成功"); } }).addOnFailureListener(new OnFailureListener() { @Override public void onFailure(Exception e) { Log.i(TAG, "onFailure: 主题取消订阅失败"); } }); } }
Manifest
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<meta-data android:name="com.huawei.hms.client.channel.androidMarket" android:value="false"/> <service android:name="com.example.cbv.MyHmsMessageService" android:exported="false"> <intent-filter> <action android:name="com.huawei.push.action.MESSAGING_EVENT"/> </intent-filter> </service>
classpath "com.huawei.agconnect:agcp:1.5.2.300"
id "com.huawei.agconnect"
implementation "com.huawei.hms:iap:5.1.0.300" implementation "com.huawei.hms:push:5.0.4.302" implementation "com.huawei.hms:hwid:5.1.0.301" implementation "com.huawei.agconnect:agconnect-core:1.5.2.300"