EasyGoogle是一个封装库简化了与Google Play Services的基础交互。这个库封装了以下APIs当前:
Google Sign-In
Google Cloud Messaging
Google App Invites
Google SmartLock for Passwords
安装
EasyGoogle is installed by adding the following dependency to yourbuild.gradlefile:
- dependencies {
- compile 'pub.devrel:easygoogle:0.2.1+'
- }
复制代码 Enabling Services
Before you begin, visit this page to select Google services and add them to your Android app. Make sure to enable any services you plan to use and follow all of the steps, including modifying yourbuild.gradlefiles to enable thegoogle-servicesplugin.
Once you have agoogle-services.jsonfile in the proper place you can proceed to use EasyGoogle.
Basic
EasyGoogle makes use ofFragmentsto manage the lifecycle of theGoogleApiClient, so any Activity which uses EasyGoogle must extendFragmentActivity.
All interaction with EasyGoogle is through theGoogleclass, which is instantiated like this:
- public class MainActivity extends AppCompatActivity {
-
- private Google mGoogle;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
- mGoogle = new Google.Builder(this).build();
- }
-
- }
复制代码
Of course, instantiating aGoogleobject like this won't do anything at all, you need to enable features individually.
Sign-In
To enable Google Sign-In, call the appropriate method onGoogle.Builderand implement theSignIn.SignInListenerinterface:
- public class MainActivity extends AppCompatActivity implements
- SignIn.SignInListener {
-
- private Google mGoogle;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
- mGoogle = new Google.Builder(this)
- .enableSignIn(this)
- .build();
- }
-
- @Override
- public void onSignedIn(GoogleSignInAccount account) {
- // Sign in was successful.
- }
-
- @Override
- public void onSignedOut() {
- // Sign out was successful.
- }
-
- @Override
- public void onSignInFailed() {
- // Sign in failed for some reason and should not be attempted again
- // unless the user requests it.
- }
-
- }
复制代码
Then, use theSignInobject frommGoogle.getSignIn()to access API methods likeSignIn#getCurrentUser(),SignIn#signIn, andSignIn#signOut.
Cloud Messaging
To enable Cloud Messaging, you will have to implement a simpleServicein your application.
First, pick a unique permission name and make the following string resource in yourstrings.xmlfile. It is important to pick a unique name:
- <string name="gcm_permission">your.unique.gcm.permission.name.here</string>
复制代码
Next, add the following to yourAndroidManifest.xmlinside theapplicationtag:
- <!-- This allows the app to receive GCM through EasyGoogle -->
- <service
- android:name=".MessagingService"
- android:enabled="true"
- android:exported="false"
- android:permission="@string/gcm_permission" />
复制代码
Then implement a class calledMessagingServicethat extendsEasyMessageService. Below is one example of such a class:
- public class MessagingService extends EasyMessageService {
-
- @Override
- public void onMessageReceived(String from, Bundle data) {
- // If there is a running Activity that implements MessageListener, it should handle
- // this message.
- if (!forwardToListener(from, data)) {
- // There is no active MessageListener to get this, I should fire a notification with
- // a PendingIntent to an activity that can handle this.
- PendingIntent pendingIntent = createMessageIntent(from, data, MainActivity.class);
- Notification notif = new NotificationCompat.Builder(this)
- .setContentTitle("Message from: " + from)
- .setContentText(data.getString("message"))
- .setSmallIcon(R.mipmap.ic_launcher)
- .setContentIntent(pendingIntent)
- .setAutoCancel(true)
- .build();
-
- NotificationManager notificationManager =
- (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
- notificationManager.notify(0, notif);
- }
- }
-
- @Override
- public void onNewToken(String token) {
- // Send a registration message to the server with our new token
- String senderId = getString(R.string.gcm_defaultSenderId);
- sendRegistrationMessage(senderId, token);
- }
- }
复制代码
Note the use of the helper methodsforwardToListenerandcreateMessageIntent, which make it easier for you to either launch an Activity or create a Notification to handle the message.
TheforwardToListenermethod checks to see if there is an Activity that implementsMessaging.MessagingListenerin the foreground. If there is, it sends the GCM message to the Activity to be handled. To implementMessaging.MessagingListener, call the appropriate method onGoogle.Builderin yourActivityand implement the interface:
- public class MainActivity extends AppCompatActivity implements
- Messaging.MessagingListener {
-
- private Google mGoogle;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
- mGoogle = new Google.Builder(this)
- .enableMessaging(this, getString(R.string.gcm_defaultSenderId))
- .build();
- }
-
- @Override
- public void onMessageReceived(String from, Bundle message) {
- // GCM message received.
- }
- }
复制代码
Then, use theMessagingobject frommGoogle.getMessaging()to access API methodslikeMessaging#send.
App Invites
To enable App Invites, call the appropriate method onGoogle.Builderand implement theAppInvites.AppInviteListenerinterface:
- public class MainActivity extends AppCompatActivity implements
- AppInvites.AppInviteListener {
-
- private Google mGoogle;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
- mGoogle = new Google.Builder(this)
- .enableAppInvites(this)
- .build();
- }
-
- @Override
- public void onInvitationReceived(String invitationId, String deepLink) {
- // Invitation recieved in the app.
- }
-
- @Override
- public void onInvitationsSent(String[] ids) {
- // The user selected contacts and invitations sent successfully.
- }
-
- @Override
- public void onInvitationsFailed() {
- // The user either canceled sending invitations or they failed to
- // send due to some configuration error.
- }
-
- }
复制代码
Then, use theAppInvitesobject frommGoogle.getAppInvites()to access API methods likeAppInvites#sendInvitation.
SmartLock for Passwords
To enable Smart Lock for Passwords, call the appropriate method onGoogle.Builderand implement theSmartLock.SmartLockListenerinterface:
- public class MainActivity extends AppCompatActivity implements
- SmartLock.SmartLockListener {
-
- private Google mGoogle;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
- mGoogle = new Google.Builder(this)
- .enableSmartLock(this)
- .build();
- }
-
- @Override
- public void onCredentialRetrieved(Credential credential) {
- // Successfully retrieved a Credential for the current device user.
- }
-
- @Override
- public void onShouldShowCredentialPicker() {
- // In order to retrieve a Credential, the app must show the picker dialog
- // using the SmartLock#showCredentialPicker() method.
- }
-
- @Override
- public void onCredentialRetrievalFailed() {
- // The user has no stored credentials, or the retrieval operation failed or
- // was canceled.
- }
-
- }
复制代码
Then, use theSmartLockobject frommGoogle.getSmartLock()to access API methods likeSmartLock#getCredentials()andSmartLock#save().
项目主页:http://www.open-open.com/lib/view/home/1449892875254 |